Hrbust 2185 Coin【分类讨论】水题

来源:互联网 发布:均不是c语言关键字 编辑:程序博客网 时间:2024/06/07 17:05

CoinTime Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 85(55 users)Total Accepted: 60(53 users)Rating: Special Judge: NoDescription

小三三又在玩游戏,小三三为了炫耀自己的聪明,说:“我可以把自己的眼睛蒙上,然后将已知有m个正面朝上的n枚硬币只需要两步就把它们分成两份(集合不能为空),并且满足两份中正面的数量相同。

两步操作是:

操作1)选出一些硬币拿出来,放到另外一堆;

操作2)选出尽量少的一些硬币翻转它们使得两份中正面数量相同。”

注意,小三三是蒙上眼睛的,她只能知道有n个硬币,有m个正面,她的手摸不出来硬币的正反面,但是能摸出来有多少个硬币。小三三能完成这样的操作麽?

Input

本题有多组测试数据,每组测试数据包含两个正整数n,m(0<m≤n<1000),其中n代表硬币的数量,m代表正面朝上的数量。

Output

对于每组测试数据,如果小三三不能通过这两步完成,请输出-1,否则输出两个数字,并用空格隔开。第一个数字表示两份中较小的数量,第二个数字表示翻转的硬币的数量。

Sample Input

2 1

5 2

Sample Output

1 1

2 2

Source2014.11.30新生赛-正式赛

思路:


1、如果n==m,那么我们判断n是否为偶数,如果是偶数,直接将n个硬币随便分成两堆就好,如果是奇数,那么分成两堆之后还需要将数目较多的那一堆中的某一个硬币翻转,才能使得两堆正面朝上的硬币数相同。


2、如果n!=m;我们考虑将一堆分成m个硬币,另外一堆分成n-m个硬币,对应我们无论发生了什么情况,只要把正面朝上的所有硬币都翻转过去就行了。


3、如果n==1,那么怎么分都一定要一堆为空,但是题目要求不能有堆为空,所以此时输出-1.


Ac代码:


#include<stdio.h>#include<string.h>#include<iostream>using namespace std;int main(){    int n,m;    while(~scanf("%d%d",&n,&m))    {        if(n==1)printf("-1\n");        else        {            if(n!=m)            {                printf("%d %d\n",min(m,n-m),m);            }            else            {                if(n%2==0)                {                    printf("%d 0\n",n/2);                }                else printf("%d 1\n",n/2);            }        }    }}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 墙内线路断了怎么办 墙里的电线坏了怎么办 鱼竿最前端断了怎么办 下雨天墙壁与管道间漏水怎么办 电饭锅的电线被雨淋了怎么办 钢琴跨八度手短怎么办 弹钢琴手指不灵活怎么办呢? 理发剪不锋利了怎么办 室外宽带线断了怎么办 接宽带光纤太短怎么办 装修光纤网线太短怎么办 宽带入户线断了怎么办 电信有无线没网怎么办 墙里的网线断了怎么办 墙里网线断了怎么办 3根网线断了怎么办 剪了层次的头发怎么办 小米6充电线坏了怎么办 小米6导航信号弱怎么办 麦多多充不了电怎么办 一加数据线坏了怎么办 小米耳机泡水了怎么办 公司拖欠工资公司破产了怎么办 苹果x外壳掉漆怎么办 手机壳按键很硬怎么办 棉质白衣服染色怎么办 白棉t恤混洗染色怎么办 包包被衣服染色了怎么办 白色衣服染了菜汁怎么办 一加3t屏幕刺眼怎么办 怀孕吃了好多杏怎么办 门破了个洞怎么办 钢圈轮毂刮花了怎么办 瓷砖用刀子划了怎么办 陶瓷洗手台裂了怎么办 洗车泵水管坏了怎么办 印胶浆里面渗入了发泡浆怎么办? 管子断在水管里怎么办 衣服上的织带缩水怎么办 真丝衣服拔缝了怎么办 顾客说衣服太花怎么办