题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1713 一次AC,感觉不错。 思路: 说白了就是分数的GCD. 输入 a/b c/d 转换后变成: (a*d)/(b*d) 和 (c*b)/(b*d) 按照题意,就是在转相同的圈子(b*d圈)时,各自需要时间a*d和c*b. 所以,这里把a*b与c*b的最小公倍数求出来就可以了。 这样。求出的最小公倍数lcm再除以(b*d)就是所求的周期。 (http://www.wutianqi.com/) 但是,这里要求若无法整出,则写出分数形式,这时, 就可以求lcm与(b*d)的最大公约数gcd, 求出gcd后与(b*d)比较,若相等,则证明可以整除~~~~ 然后就可以AC了。。。 个人感觉这题对lcm,gcd考察的比较灵活,是一道好题! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [...]
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1212 用数论的同余知识(a+b)% c == ( (a%c) + (b%c) ) % c; //还有 (a×b)% c == ( (a%c) × (b%c) ) % c; 数论~~~ [s:24] 哥的一块漏洞。 好题! 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include<iostream> #include<string> using namespace std; int main() { char [...]
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1205 思路:只要最多的那一堆比剩下的多两个以上就NO 注意用__int64来处理数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include <iostream> using namespace std; int main() { int t; scanf("%d",&t); while (t–) { int a,n; __int64 max=0,sum=0; scanf("%d",&n); for (int i = [...]