题目描述
将1,2, … ,9共9个数分成3组,分别组成3个三位数,且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数。
输入格式
木有输入
输出格式
若干行,每行3个数字。按照每行第1个数字升序排列。
思路:
get()把每一组数(3个数)的每一位数用一个数组保存,即a[10],1代表存在,0代表不存在。output()函数是确认该组数是否符合,符合便输出。每一次循环都有memset()重置数组[0]~[9]为0。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
int a[10];
void get( int num) {
while (num > 0) {
a[num % 10]++;
num /= 10;
}
}
void output(int num) {
int i;
for (i = 1; i < 10; i++) {
if (a[i] != 1)
break;
}
if (i == 10)
cout << num << " " << 2 * num << " " << 3 * num << endl;
}
int main() {
for (int i = 123; i < 333; i++) {
memset(a, 0, sizeof(a));
get( i);
get( 2 * i);
get( 3 * i);
output(i);
}
return 0;
}
有一个小地方需要注意:memset()函数必须要带有头文件 < cstring >,否则编译失败。