首页 > 代码库 > HDU_1495_模拟
HDU_1495_模拟
http://acm.split.hdu.edu.cn/showproblem.php?pid=1495
自己用模拟写的,先除以三个数的最大公约数,弱可乐为奇数,则无解,然后开始模拟。
利用大杯子和小杯子的差为偶数,可以制造出不同的数,最终得到结果。
这题还可以用bfs暴力做,另外还可以用数论知识退出一个简单的结果,可怕= =
详情:http://blog.csdn.net/v5zsq/article/details/52097459
#include<iostream>#include<cstdio>using namespace std;int gcd(int a,int b){ return b?gcd(b,a%b):a;}int main(){ int s,m,n; while(cin >> s >> n >> m && s && n && m) { int g = gcd(m,n); int a = s/g; if(a%2) { printf("NO\n"); continue; } int big = max(m,n)/g; int small = min(m,n)/g; int x = a-big,y = big,z = 0,num = 1;; while(y != a/2) { if(y > small) { y -= small; x += small; num += 2; } else if(y < small) { z = y; x -= big; y = big; y -= small-z; x += small; z = 0; num += 4; } else { num = 0; break; } } if(!num) printf("NO"); else { if(z) printf("%d\n",num+1); else printf("%d\n",num); } } return 0;}
HDU_1495_模拟
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。