这道题需要我们找出所有符合要求的数对,由于数据量不大,这里我们可以使用枚举的方法进行枚举,那么我们从最小的三位数100到最大数999进行遍历寻找,再对这三个数进行判断,判断这三个数的每一位是否由1-9这9个数组成,且每个数只出现一次。在判断这个地方我们可以用一个数组来进行计数,将三个数的每一位出现的次数进行保存。最后遍历数组,看每一个元素的值是否都是1。
#include <iostream>
#include<cstring>
using namespace std;
int num[10];
int main() {
//1 2 3 4 5 6 7 8 9
for (int i = 100; i <= 333;i++) {
int a = i, b = 2 * i, c = 3 * i;
memset(num,0,40);//memset(dst,val,size) 从dst地址开始,将后面size个元素,都置为val
//对每个位十位百位进行计数
num[a % 10]++;
num[a / 10 % 10]++;
num[a / 100]++;
num[b % 10]++;
num[b / 10 % 10]++;
num[b / 100]++;
num[c % 10]++;
num[c / 10 % 10]++;
num[c / 100]++;
bool flag = true;
//是否由1-9数字组成
for (int j = 1; j <= 9;j++) {
if (num[j] != 1) {
flag = false;
break;
}
}
if (flag) cout << a << " " << b << " " << c << endl;
}
return 0;
}
标签:连击,洛谷,P1008,int,枚举,遍历,100,include,进行
From: https://blog.csdn.net/2401_88475903/article/details/143866544