题目描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。
//感谢黄小U饮品完善题意
输入输出格式
输入格式:
三个数,A B C。
输出格式:
若干行,每行3个数字。按照每行第一个数字升序排列。
输入输出样例
输入样例#1:
1 2 3
输出样例#1:
192 384 576 219 438 657 273 546 819 327 654 981
说明
保证A<B<C
代码实现:
1 #include<cstdio> 2 int a,b,c; 3 bool v[10],w[10],p; 4 bool pd(int x){ 5 while(x){ 6 if(w[x%10]) return 1; 7 w[x%10]=1;x/=10; 8 } 9 } 10 void find(int x){ 11 if(x>100){ 12 for(int i=1;i<10;i++) w[i]=0; 13 int y=x*b/a,z=x*c/a; 14 if(pd(x)||pd(y)||pd(z)) return; 15 printf("%d %d %d ",x,y,z);p=1; 16 } 17 for(int i=1;i<=9;i++) if(!v[i]){v[i]=1;find(x*10+i);v[i]=0;} 18 } 19 int main(){ 20 scanf("%d%d%d",&a,&b,&c); 21 find(0); 22 if(!p) printf("No!!! "); 23 return 0; 24 }
一开始没注意到要输出”No!!!“,结果60,呵呵。
题目来源:洛谷