luogu1618 三连击(升级版)
时空限制 1000ms/128MB
题目描述
将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
代码
#include<iostream>
#include<algorithm>
using namespace std;
bool f[15];
int main(){
int A,B,C,ans=0;
cin>>A>>B>>C;
for (int a=123,b,c; a<=987*A/C; a++){
fill(f,f+10,0);
b=a*B/A; c=a*C/A;
f[a%10]=f[a/10%10]=f[a/100]=true;
f[b%10]=f[b/10%10]=f[b/100]=true;
f[c%10]=f[c/10%10]=f[c/100]=true;
int cnt=0;
for (int i=1; i<=9; i++)
if (f[i]) cnt++;
if (cnt==9){
cout<<a<<" "<<b<<" "<<c<<endl;
ans++;
}
}
if (!ans) cout<<"No!!!"<<endl;
return 0;
}