小lagi @ 2020-01-04 20:14:18
#include<stdio.h>
int ischong(int n1,int n2,int n3)
{
int a[3],b[3],c[3];//分别存储第一二三个数值
int i=2,j=2,k=2,flag1=0,flag2=0,flag3=0,flag4=0;
while(n1>0||n2>0||n3>0)//对应到各个数组中
{
a[i--]=n1%10;
b[j--]=n2%10;
c[k--]=n3%10;
n1/=10;
n2/=10;
n3/=10;
}
for(i=0;i<=2;i++)//排除掉存在0的情况
if(a[i]==0||b[i]==0||c[i]==0)
{
flag4=1;
break;
}
if(flag4==0)//在数组中没有0的情况下继续走
{
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
for(k=0;k<=2;k++)//判断是否有相同值
if(a[i]==b[j]||a[i]==c[k]||b[j]==c[k])
{
flag1=1;
break;
}
if(flag1==1)
{
flag2=1;
break;
}
}
if(flag2==1)//实现逐步跳出循环
break;
}
}
if(a[0]<b[0]&&b[0]<c[0])//第一个数从小到大排
flag2=0;
else
flag2=1;
if(flag2||flag1||flag4)//只要任意一种不符合
return 0;
else
return 1;
}
int weishu(int m,int n)//判断数值位数不能超过三
{
int p=0,q=0;
while(m>0)
{
p++;
m/=10;
}
while(n>0)
{
q++;
n/=10;
}
if(p==3&&q==3)
return 1;
else
return 0;
}
int main()
{
int i,j,k,n,m,q,p,flag1=0;
scanf("%d%d%d",&m,&q,&p);
for(i=1;i<=9;i++)
for(j=1;j<=9;j++)
for(k=1;k<=9;k++)
if(i!=j&&j!=k&&i!=k)
{
n=i*100+j*10+k;
if(weishu(n/m*q,n/m*p))
{
if(ischong(n,n/m*q,n/m*p))//倍数求各值
{
flag1=1;
printf("%d %d %d\n",n,n/m*q,n/m*p);
}
}
}
if(flag1==0)
printf("No!!!");
return 0;
}```
by lu_fish @ 2020-01-04 20:20:20
橙题这么多?