C 返回单个整数,即解算(A)mod 100000007的值 /** *@input A:Integer * *@输出整数 */ 整数解算(整数A){ INTANS,我; ans=0; i=1; 而(ians+def(i)很容易溢出,当然超出了时间限制。如果
返回单个整数,即解算(A)mod 100000007的值C 返回单个整数,即解算(A)mod 100000007的值 /** *@input A:Integer * *@输出整数 */ 整数解算(整数A){ INTANS,我; ans=0; i=1; 而(ians+def(i)很容易溢出,当然超出了时间限制。如果,c,algorithm,C,Algorithm,返回单个整数,即解算(A)mod 100000007的值 /** *@input A:Integer * *@输出整数 */ 整数解算(整数A){ INTANS,我; ans=0; i=1; 而(ians+def(i)很容易溢出,当然超出了时间限制。如果A=100000,您的主解算函数将运行100K次,在def中,它将再次从1循环到100K。100K*100K=肯定是TLE。我如何减少这种情况?我被困在这里很长时间了。您能解释一下代码在做什么吗?不要使用递归,因为它肯定对w没有帮助ith性能
/**
*@input A:Integer
*
*@输出整数
*/
整数解算(整数A){
INTANS,我;
ans=0;
i=1;
而(ians+def(i)
很容易溢出,当然超出了时间限制。如果A=100000,您的主解算函数将运行100K次,在def中,它将再次从1循环到100K。100K*100K=肯定是TLE。我如何减少这种情况?我被困在这里很长时间了。您能解释一下代码在做什么吗?不要使用递归,因为它肯定对w没有帮助ith性能
/**
* @input A : Integer
*
* @Output Integer
*/
int solve(int A){
int ans,i;
ans=0;
i=1;
while(i<=A){
ans=((ans+def(i))%1000000007);
i++;
}
return (ans);
}
int def(int m){
int ans,k;
ans=1;
k=1;
while(k<=m){
if(gcd(k,m)==1){
ans=ans*k;
}
k++;
}
return (ans%m);
}
int gcd(int a, int b)
{
if (b == 0)
return a;
return gcd(b, a % b);
}
Def P(m):
ans=1
k=1
while k<=m:
if GCD(k,m)==1:
ans*=k
k+=1
return (ans % m)
def F(A):
ans = 0
i=1
while i<=A:
ans+=P(i)
i+=1
return ans % 1000000007