题目描述
将 1, 2,ldots, 91,2,…,9 共 9 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!
。
//感谢黄小U饮品完善题意
输入格式
三个数,A,B,C。
输出格式
若干行,每行 33 个数字。按照每行第一个数字升序排列。
输入输出样例
输入 #1
2009
输出 #1
3 3 2003
#include<bits/stdc++.h> using namespace std; int a,b,c,f[4],h[10],i,j,k,l,n,p=3,q=2,u=3,x[7],w,uu=0,yy=0,kk,ll; double g[4],m[4]; int main(){ cin>>a>>b>>c; double d=1000/(a+c)*c; if(d<123) cout<<"No!!!"; for(i=1;i<=3;i++) { h[1]=h[2]=h[3]=h[4]=h[5]=h[6]=h[7]=h[8]=h[9]=0; h[i]=1; f[1]=i; for(j=1;j<=9;j++) { for(ll=1;ll<=9;ll++) { if(ll==i) continue; else h[ll]=0; } if(h[j]==1) continue; h[j]=1; f[2]=j; for(k=1;k<=9;k++) { for( kk=1;kk<=9;kk++) { if(kk==i||kk==j) continue; else h[kk]=0; } uu=0; if(h[k]==1) continue; f[3]=k; h[k]=1; double n=f[1]*100+f[2]*10+f[3]; double o=n/a*b,r=n/a*c; if(o!=int(o)||r!=int(r)||r>999||o>999) continue; x[1]=int(o)%10; x[2]=int(o)/10%10; x[3]=int(o)/100%10; x[4]=int(r)%10; x[5]=int(r)/10%10; x[6]=int(r)/100%10; for(w=1;w<=6;w++) { if(h[x[w]]==1) {uu=1; break; } else h[x[w]]=1; } if(uu==0) { yy=1; cout<<f[1]<<f[2]<<f[3]<<" "<<int(o)<<" "<<int(r)<<endl; } } } } if(yy==0) cout<<"No!!!"; }