【BZOJ】3930: [CQOI2015]选数
我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案。小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一步研究。然而他很快发现工作量太大了,于是向你寻求帮助。你的任务很简单,小z会告诉你一个整数K,你需要回答他最大公约数刚好为K的选取方案有多少个。由于方案数较大,你只需要输出其除以1000000007的余数即可
感觉这个问题解决起来不是那么的复杂,但是思考的还是有一定的难度的。
没有代码只是分析这个问题:
gcd(x1,x2,x3,.....xn)==k; 我们可以的得到的值就是gcd(x1/k,x2/k,x3/k...xn/k)=1; 刚开始我想的就是如果gcd(x1,x2)==1&&gcd(x1,x3)==1
可以推出gcd(x2,x3)==1; 但是我发现这样做是不对的,因为gcd(2,25)==1&&gcd(6,25)==1但是gcd(6,2)!=1这样说的话我的结论是不成立的,。
好吧》 这个题我不会,我只会上面的一部分,,,, 然后怎么想,真是难啊,,,,
假设x1,x2,x3不全相同,,这样子的话我们可以知道的就是xn-x1=k(dn-d1)>gcd(x1,xn);
然后我们就可以很愉快的枚举公因子,发现1e5*sqrt(1e5),妈的竟然可以过啊,,,,
f[i]=t^n-t-sigma(i|j f[j]); 是不是我可以先算出来最大的公约数啊,gcd的话也就是(h-t+1)log(h-t+1)
然后这个问题好像就是能做出来了。。。。

浙公网安备 33010602011771号