摘要: 思路:主要考虑求1-n中与p互质数的和。直接不好求解,反着来!求1-n中与p不互质的数的和。由于p=p1^e1*p2^e2……所以有容斥原理来解决。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define ll __int64 8 using namespace std; 9 mapmm; 10 map::iterator it; 11 bool f[1000]; 12 int factor[1000],prime[1000],cnt,num,cn; 13 ll an[4... 阅读全文
posted @ 2013-08-20 21:51 _随心所欲_ 阅读(286) 评论(0) 推荐(0)
摘要: 思路:构造矩阵a[i]*b[i]=ax*bx*a[i-1]*b[i-1]+ax*by*a[i-1]+ay*bx*b[i-1]+ay*by代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define ll __int64 8 #define mod 1000000007 9 #define phi 100000000610 using namespace std;11 struct ma12 {13 ll a[5][5];14 };15 ma mul(ma a,ma b)16 {17 ... 阅读全文
posted @ 2013-08-20 20:54 _随心所欲_ 阅读(267) 评论(0) 推荐(0)
摘要: 思路:容易发现二进制表示的数的最低位规律是01010101……;接着是001100110011……;接着是:0000111100001111……这样我们发现每一位的循环节是2^(i+1),前2^i是0,后面的是1.这样就可以算出每一位1出现的次数。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #define ll __int64 6 using namespace std; 7 ll a[35]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384, 8 32768,65536, 阅读全文
posted @ 2013-08-20 12:05 _随心所欲_ 阅读(321) 评论(0) 推荐(0)