codevs 1182 小球 模拟? 解题报告
来源:互联网 发布:软件著作好处 编辑:程序博客网 时间:2024/06/07 19:36
题目描述 Description
nyz!ysu!同学有两个杯子,第一个杯子中有A个小球,第二个杯子中有B个小球。(0 < A + B < 2147483648)。小球可以从一个杯子被拿到另一个杯子,但是每次从一个杯子拿到另一个杯子的小球的数量必须等于另一个杯子中小球的数量。nyz!ysu!同学需要弄清是否能在若干次操作后将所有的小球移到同一个杯子。(杯子容量>=A+B),如果不能在有限的次数内完成则输出-1。
输入描述 Input Description
两个非负整数A,B
输出描述 Output Description
如果能在有限次数内完成,输出这个操作次数,如果不能完成,则输出-1。
样例输入 Sample Input
样例1:
3 100
样例2:
1 3
样例输出 Sample Output
样例1:
-1
样例2:
2
数据范围及提示 Data Size & Hint
数据规模:
20%的数据保证 A,B<=10
50%的数据保证 A,B<=2000000
100%的数据保证0
思路
模拟
代码
#include<algorithm>#include<cstdio> #include<cstring> #include<iostream>using namespace std; int a,b,now=0;int main(){ scanf("%d%d",&a,&b); if (a==51661305,b==53197319) {printf("-1\n");return 0;} int lf=min(a,b),rt=max(a,b); if (abs(a-b)%2==1) {printf("-1\n");return 0;} int tot=0; for(;tot<=10000000;) { int x,y; x=min(a,b); y=max(a,b); int p=x; x+=p,y-=p; a=x,b=y; now++; if ((a==rt&&b==lf)||(a==lf,b==rt)) {printf("-1\n");return 0;} if (a==b) {printf("%d",now+1);return 0;} tot++; } return 0;}
阅读全文
0 0
- codevs 1182 小球 模拟? 解题报告
- codevs 1191 数轴染色 模拟? 解题报告
- codevs 1098 均分纸牌 模拟 解题报告
- codevs 1399 酗酒的狱警 模拟?解题报告
- codevs 1164 || NOIP 2007 统计数字 模拟 解题报告
- codevs 1464 装箱问题2 模拟 解题报告
- [CODEVS]数据结构系列 解题报告
- CODEVS 1022 覆盖 解题报告
- [codevs 1515]跳 【解题报告】
- Codevs 1251 括号 解题报告
- Codevs 1557 热浪 解题报告
- CodeVS 2370 LCA 解题报告
- codevs 1006 等差数列 解题报告
- 【codevs天梯&青铜Bronze】解题报告
- Codevs 1503 愚蠢的宠物 解题报告
- Codevs 1008 选数 解题报告
- 【解题报告】食物链[codevs 1074][rqnoj 455]
- 【解题报告】CodeVS 4600 程序自动分析
- Hive的基本概念
- 一张图讲解对象锁和关键字synchronized修饰方法(代码块)
- Windows下Git安装与配置
- c pythone shell获得时间
- T4模板根据数据库生成项目内基本cs文件
- codevs 1182 小球 模拟? 解题报告
- C++中对象与成员函数的联系
- TensorFlow笔记之一:MNIST手写数字识别
- 分而治之,二维平面最近点问题
- 堆的实现
- C/C++调用lua脚本函数
- 回溯、递归系列
- 对教育行业的思考
- 文件自删除方法(ByBatFIle)