摘要:
思路:1.首先介绍下4次方的求和公式:S(n)=(6*n^5+15*n^4+10*n^3-n)/30.2.n太大直接求1~n-1中与n互质的数会超时,那么就转换下思路,求不与n互质的数;分析知道当某一个数不与n互质时,他的倍数也一定不与n互质,而且这个数与n具有公共的因子;为了去掉重复的很容易想到容斥原理。对于n=p1^a1*p2^a2*p3^a3……与n不互质的数=(p1+2*p1……)+(p2+2*p2……)-(p1*p2+2*p1*p2……)……;具体看代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #includ 阅读全文
摘要:
搜索下就可以了……代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int p[10][10],n,a[7],b[7]; 8 string str[10],s; 9 bool flag,vis[10],vis2[10]; 10 bool dfs2(int d) 11 { 12 int i,j; 13 if(d==n){ 14 i=j=0; 15 while(i>t; 68 while(t--){ 69... 阅读全文
摘要:
思路:分析:假设取的牌顺序是一个序列,那么这种序列在末尾为1时是和取牌序列一一对应的,且是符合“游戏结束时牌恰好被取完”的一种情况。简证:1、在序列中,任一数 i 的后一个数 j 是必然要放在第 i 堆里的。而值为 i 的数有 a[i]个,所以在 i 后面的数也恰好a[i]个,所以a[i]个数被放到第 i 堆,符合题目约束条件。2、在序列中,由于游戏是从第一堆开始的,所以第一个数虽然没有前驱,但是他是放在第 1 堆的。所以如果 1 不为最后一个数,那么第一堆中必然有a[1]+1个数了,不行。3、序列中的最后一个数 记 i ,如果不为 1 ,那么值 i 就只有a[i]-1个后继了。4、结合2、3 阅读全文