摘要:
设S(x)表示x的因子和。则题目求为:S(2004^X)mod 29因子和S是积性函数,即满足性质1。性质1 :如果 gcd(a,b)=1 则 S(a*b)= S(a)*S(b)2004^X=4^X * 3^X *167^XS(2004^X)=S(2^(2X)) * S(3^X) * S(167^X)性质2 :如果 p 是素数 则 S(p^X)=1+p+p^2+...+p^X = (p^(X+1)-1)/(p-1)因此:S(2004^X)=(2^(2X+1)-1) * (3^(X+1)-1)/2 * (167^(X+1)-1)/166167%29 == 22S(2004^X)=(2^(2X+1 阅读全文
posted @ 2012-04-24 17:44
背着超人飞
阅读(327)
评论(0)
推荐(0)
摘要:
题目大意是求出N^N的最高位整数。设M = N ^ N, 则对等式两边同时求lg得, M = 10^(N*lgN),由于10的整数次方的最高位恒为一,故对M的最高位不产生影响,于是对M的最高位产生影响的只有10^(N*lgN的小数部分)。由此分析过后,我们只需要求出N*lgN的小数部分a然后求10^a的整数部分即为M的最高位整数。AC code:View Code 1 #include <iostream> 2 #include <math.h> 3 __int64 n; 4 double temp; 5 int cas; 6 using namespace std; 阅读全文
posted @ 2012-04-24 17:19
背着超人飞
阅读(146)
评论(0)
推荐(0)
摘要:
这一题是比较基础的数论题了,求N个数的最小公倍数,思路就是先求出两个数的最小公倍数,然后再用这个最小公倍数与下一个数求最小公倍数,则得三个数的最小公倍数,然后再用这三个数的最小公倍数与第四个数求最小公倍数,得这四个数的最小公倍数……如此递推,就OK了。不过要注意算最小公倍数的时候小心数据溢出!AC code:View Code 1 #include <iostream> 2 using namespace std; 3 int n, m; 4 int arr[1000]; 5 6 int gcd(int a, int b) //求出最大公约数 7 { 8 if(b) 9 ... 阅读全文
posted @ 2012-04-24 16:12
背着超人飞
阅读(229)
评论(0)
推荐(0)