[NOIP1998 普及组] 三连击
题目背景
本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。
题目描述
将 共
个数分成
组,分别组成
个三位数,且使这
个三位数构成
的比例,试求出所有满足条件的
个三位数。
输入格式
无
输出格式
若干行,每行 个数字。按照每行第
个数字升序排列。
样例 #1
样例输入 #1
无
样例输出 #1
192 384 576
* * *
...
* * *
(剩余部分不予展示)
思路
枚举所有可能的三位数,判断这三个数是否由1到9这9个数字组成,每个数字仅出现一次。 注意:这9个数字是1到9,不含0。
AC代码
#include <iostream>
#include <bitset>
#define AUTHOR "HEX9CF"
using namespace std;
bitset<10> bs;
void set(int x)
{
bs.set(x % 10);
bs.set((x % 100 - x % 10) / 10);
bs.set((x % 1000 - x % 100) / 100);
}
int main()
{
for (int i = 111; i < 1000 && i <= 1000 / 3; i++)
{
bs.reset();
int j = i * 2;
int k = i * 3;
set(i);
set(j);
set(k);
if (9 == bs.count() && 0 == bs[0])
{
cout << i << " " << j << " " << k << endl;
}
}
return 0;
}