提交到OJ上时间超限,我该怎么改?哪出问题了?救救孩子吧,谢谢!
供参考:
#include<stdio.h>
int main()
{
int i,a,b,c,n,flg=0;
scanf("%d%d%d%d",&a,&b,&c,&n);
for (i = 2;i < n; i++)
{
if (i % a == 1 && i % b == 1 && i % c == 1)
{
printf("%d", i);
flg = 1;
break;
}
}
if(!flg) printf("Wrong count!");
return 0;
}
这个可以过:你写的那个for循环嵌套太多了,非常容易超时
#include<stdio.h>
#include<math.h>
int max(int a,int b,int c)
{ //自定义函数max
if(a>b&&a>c) { // 若a的值最大
return a; // 返回a
} else if(b>a&&b>c) { // 若b的值最大
return b; // 返回b
} else {
return c; // 否则返回c
}
}
int main()
{
int a,b,c,n,i,f=1,p,q=1;
scanf("%d%d%d%d",&a,&b,&c,&n);
p = max(a,b,c);
for(i=p;i<=n;)
{
if(i%a==0&&i%b==0&&i%c==0&&i<=28000&&i+1<=n)
{
printf("%d",i+1);
f=0;
break;
}
q++;
i=p*q;
}
if(f==1)
printf("Wrong count!");
return 0;
}