P1618 三连击(升级版)
1.思路
这道题写得吐血了,20分,超时都经历了(受伤了)。其实挺简单的。只要能用if就别用for。
用数组来统计每个数字就行了
2.源码
#include<stdio.h>
int main()
{
int i,j,k,num[10]={0},a,b,c,t=0;
scanf("%d%d%d",&a,&b,&c);
for(i=1;i<987;i++)
{
if(a*i<=987)
{
num[a*i%10]++;
num[a*i/10%10]++;
num[a*i/100]++;
}
if(b*i<=987)
{
num[b*i%10]++;
num[b*i/10%10]++;
num[b*i/100]++;
}
if(c*i<=987)
{
num[c*i%10]++;
num[c*i/10%10]++;
num[c*i/100]++;
}
for(j=1;j<=9;j++)
if(num[j]==0)
break;
if(j>=10)
{
printf("%d %d %d\n",a*i,b*i,c*i);
t=1;
}
for(j=1;j<=9;j++)
num[j]=0; //数组置零,重新统计
}
if(t==0)
printf("No!!!");
return 0;
}