题目描述
将 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。
枚举第一个数,一个数组用来记录各个数字的使用情况,按给定比例向后计算,在满足条件的情形,将三个数字输出,并统计总数(不会太大),如果枚举结束后总数为0,则输出指定文本。
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
bool check(int a,int *p){
while(a){
int temp=a%10;
if(temp&&!p[temp-1])p[temp-1]=1;
else return false;
a/=10;
}
return true;
}
int main(void){
int a,b,c,sum=0;
cin>>a>>b>>c;
for(int i=123;i<=999;i++){
int s[9]={0};
if(check(i,s)){
int j=i*b/a;
if(check(j,s)){
int k=j*c/b;
if(check(k,s)){
if(sum++)cout<<endl;
printf("%d %d %d",i,j,k);
}
else continue;
}
else continue;
}
else continue;
}
if(!sum)cout<<"No!!!";
return 0;
}