洛谷签到题(真·签到)
本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。
题目描述
将 1, 2, …, 9 共 9 个数分成 3
组,分别组成 3 个三位数,且使这 3 个三位数构成 1 : 2 : 3 的比例,试求出所有满足条件的 3 个三位数。
输入格式
无
输出格式
若干行,每行 3 个数字。按照每行第
1 个数字升序排列。
输入输出样例 #1
输入 #1
输出 #1
1 2 3 4 5 6
| 192 384 576 * * * ...
* * * (剩余部分不予展示)
|
说明/提示
NOIP1998 普及组 第一题
题解
我的妈呀没啥好说的,递归就是了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <bits/stdc++.h> using namespace std;
bool used[10] = {0};
void f(int a, int b, int c){ if(!(a/100)){ for(int i=1;i<10;i++) if(!used[i]){ used[i] = true; f(a*10+i, b, c); used[i] = false; } } else if(!(b/100)){ for(int i=1;i<10;i++) if(!used[i]){ used[i] = true; f(a, b*10+i, c); used[i] = false; } } else if(!(c/100)){ for(int i=1;i<10;i++) if(!used[i]){ used[i] = true; f(a, b, c*10+i); used[i] = false; } } else if(a*2==b && a*3==c) cout << a << " " << b << " " << c << endl; }
int main(){ f(0, 0, 0); return 0; }
|