0
已采纳
陶梓锐
新手光能
新手光能
1670:不用高级数据写只能得80分,我也看了个测试数据。
我的核心代码如下(枚举):
for (int i=0; i<=1000000; i++) { bool f=true; for (int j=1; j<=n; j++) { if (i%a[j]!=r[j]) { f=false; break; } } if (f==true) { fa=false; cout<<i<<endl; break; } }
剩下的那个测试点,输出是:4376436883
1
张睿杰
初级天翼
初级天翼
题目是让求i从1增加到n的gcd(n,i)的和,我们假设gcd(n,i) = k,则gcd(n/k,i/k) = 1。即假设gcd(n/k, x ) = 1,则gcd(n,x*k) = k。gcd(n,i) = k,k的取值是确定的,即n的所有因子,所以,满足gcd(n/k,x) = 1个x的个数乘以k即为所有满足gcd(n,i) = k 的和。因此就转化为n/k的欧拉函数的值乘以k的所有的和。
举个例子12来说,12的因子为1,2,3,4,6,12,则和为12/1的欧拉函数值*1 + 12/2的欧拉函数值 * 2 + 12/3的欧拉函数值 * 3 + 12/4的欧拉函数值 * 4 + 12/6的欧拉函数值*6 + 12/12 的欧拉函数值 * 12。
至于一个数n的所有因子,可以先将n分解成素数幂的形式,然后再用排列组合的知识或者是深搜求出其所有因子。
1590互质数
0
0