这是暑假集训的题目,感觉很想写出来分享一下,
题目是这样的:
用1,2,3~~9组成3个三位数,abc,def,ghi,每个数字使用一次,abc:def:ghi=1:2:3 ,写出三位数所产生的所有解,从小到大排列 按照abc def ghi输出
我的思路:
先确定最小的那个三位数的范围,然后进行循环,根据比值来找出另外两个三位数,然后取出这三个三位数的各位数,用每位数对应的数组元素+1,最后把数组循环一遍,如果有大于1的,说明有数字被使用了2次,那么这三个三位数不符合条件,不输出,如果没有一个数组元素大于1,则说明每个数字只使用了一次,输出这三个三位数。
下面是我写的代码:
#include<stdio.h>
int main()
{
int i,x,y,z,a[10]={0},j;
for(i=123;i<=333;i++)
{
x=i;
y=2*x;
z=3*x;
a[x/10%10]++;
a[y/10%10]++;
a[z/10%10]++;
a[x/100%10]++;
a[y/100%10]++;
a[z/100%10]++;
a[x%10]++;
a[y%10]++;
a[z%10]++;
for(j=0;j<10;j++)
{
if(a[j]>1)
break;
else
a[j]=0;
}
if(j<10)
{
for(j=0;j<10;j++)
{
a[j]=0;
}
}
else
printf("%d %d %d\n",x,y,z);
}
}
第一次写博客,有什么不好的地方希望大家指出。