题目描述
将 1, 2,…, 9共 9 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!。
输入格式
三个数,A,B,C。
输出格式
若干行,每行 3 个数字。按照每行第一个数字升序排列。
先判断第一个数i必定在111~333,再计算i是否能被A整除,如果可以就按比例输出j、k,按位取出每一个数并判断是否全部包含123456789,这样时间复杂度就比多重循环小的多。
如果没有一组数据满足要求就需要test这个变量了,test=0,输出一组就test++,这样在结尾判断test的大小就可以决定是否输出No!!!了。
#include<stdio.h>
int main(){
int te[9]={1,2,3,4,5,6,7,8,9},what=0,num[9];
int judge=0,test=0,a,b,c,i,j,k,x=0,y=0;
scanf("%d%d%d",&a,&b,&c);
for(i=123;i<=333;i++){
if(i%a!=0){
continue;
}
what=0;
j=i/a*b;
k=i/a*c;
num[0]=i/100;num[1]=i%100/10;num[2]=i%10;num[3]=j/100;num[4]=j%100/10;num[5]=j%10;num[6]=k/100;num[7]=k%100/10;num[8]=k%10;
for(x=0;x<9;++x){
for(y=0;y<9;++y){
if(te[x]==num[y]){
what++;break;
}
}
}
if(what==9){
printf("%d %d %d\n",i,j,k);
test++;
}
}
if(test==0){
printf("No!!!\n");
}
return 0;
}