题目背景
本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。
题目描述
将 1,2,…,91,2,…,9 共 99 个数分成 33 组,分别组成 33 个三位数,且使这 33 个三位数构成 1:2:31:2:3 的比例,试求出所有满足条件的 33 个三位数。
输入格式
无
输出格式
若干行,每行 33 个数字。按照每行第 11 个数字升序排列。
样例 #1
样例输入 #1
无
Copy
样例输出 #1
192 384 576
* * *
...
* * *
(剩余部分不予展示)
题解
这道题就直接枚举 �a,�=2�,�=3�b=2a,c=3a,然后判断,就是把这几个数放进数组排序,如果按顺序就对了。
#include <bits/stdc++.h>
using namespace std;
bool check(int a, int b, int c)
{
int p1 = a / 100 % 10, p2 = a / 10 % 10, p3 = a / 1 % 10;
int p4 = b / 100 % 10, p5 = b / 10 % 10, p6 = b / 1 % 10;
int p7 = c / 100 % 10, p8 = c / 10 % 10, p9 = c / 1 % 10;
int k[10];
k[1] = p1;
k[2] = p2;
k[3] = p3;
k[4] = p4;
k[5] = p5;
k[6] = p6;
k[7] = p7;
k[8] = p8;
k[9] = p9;
sort(k + 1, k + 10); // 排序
return k[1] == 1 && k[2] == 2 && k[3] == 3 && k[4] == 4 && k[5] == 5 && k[6] == 6 && k[7] == 7 && k[8] == 8 && k[9] == 9; // 判断
}
int main()
{
for (int i = 1; i <= 999; i++)
{
if (check(i, i * 2, i * 3))
{
printf("%d %d %d\n", i, i * 2, i * 3); // 输出
}
}
return 0;
}
// 其实没啥可写的,1998年的题看代码也能看懂
Copy
��AC ����Code
#include <bits/stdc++.h>
using namespace std;
bool check(int a, int b, int c)
{
int p1 = a / 100 % 10, p2 = a / 10 % 10, p3 = a / 1 % 10;
int p4 = b / 100 % 10, p5 = b / 10 % 10, p6 = b / 1 % 10;
int p7 = c / 100 % 10, p8 = c / 10 % 10, p9 = c / 1 % 10;
int k[10];
k[1] = p1;
k[2] = p2;
k[3] = p3;
k[4] = p4;
k[5] = p5;
k[6] = p6;
k[7] = p7;
k[8] = p8;
k[9] = p9;
sort(k + 1, k + 10);
return k[1] == 1 && k[2] == 2 && k[3] == 3 && k[4] == 4 && k[5] == 5 && k[6] == 6 && k[7] == 7 && k[8] == 8 && k[9] == 9;
}
int main()
{
for (int i = 1; i <= 999; i++)
{
if (check(i, i * 2, i * 3))
{
printf("%d %d %d\n", i, i * 2, i * 3);
}
}
return 0;
}