随笔分类 -  数论

hdu 1124(数论)
摘要://数论,n!末尾0的个数/*摘自:KIDxの博客N! = 1 * 2 * 3 * (2*2) * 5 * (2*3) * 7... 产生10的原因是有2,5的因子,显然在N!中2的个数大于5的个数,所以只需求出5的个数即可 求 N! (1*2*3*4*5*...*N)里有多少个5其实可以转化成: N!中:是5的倍数的数+是5^2的倍数的数+5^3..... 如50!: 含有10个5的倍数的数:5,15,20,25,30,35,40,45,50 【50/5=10】 含有2个5^2的倍数的数:25,50【50/(5^2)=2】 可见N!中一共有12个5相乘,那么尾0也必有12个 */#inclu 阅读全文
posted @ 2012-04-06 21:00 Try86 阅读(169) 评论(0) 推荐(0)
hdu 1222(数论)
摘要://数论,判断两数是否互质#include <cstdio>#include <iostream>using namespace std;int gcd(int a, int b) { return b ? gcd(b, a%b) : a;}int main() { int t; scanf ("%d", &t); while (t--) { int n, m; scanf ("%d%d", &m, &n); if (gcd(n, m) == 1) printf ("NO\n"); el 阅读全文
posted @ 2012-04-04 20:52 Try86 阅读(132) 评论(0) 推荐(0)
hdu 1019(gcd & lcm)
摘要://数论,gcd & lcm相关//该题有只有一个数据的测试组#include <cstdio>#include <iostream>int gcd(int a, int b) { return b ? gcd(b, a%b) : a;}int lcm(int a, int b) { return a / gcd(a, b) * b;}int main() { int t; scanf ("%d", &t); while (t--) { int n, a, b, i; scanf ("%d%d", &n, 阅读全文
posted @ 2012-04-04 11:34 Try86 阅读(128) 评论(0) 推荐(0)