Luogu P1008 三连击

发布时间 2023-05-31 18:22:05作者: Gery_8002

题目描述

link

思路

因为 \(1-9\) 且不能重复使用, 所以从 \(123\) 循环至 \(789\), 相应的 \(2\) 倍, \(3\) 倍, 即为另两个数字.

对每个数字进行拆分, 所用数字使用次数 \(+1\), 判断是否每个数字都被使用且只使用一次, 输出即可.

Code

#include <cstdio>
#include <cstring>

int s[15];

void cf(int x) {
	while (x != 0) {
		s[x%10]++;
		x /= 10;
	}
}

int main() {
	for (int i = 123; i <= 789; i++) {
		int j = i * 2, k = i * 3;
		cf(i); cf(j); cf(k);
		if (s[1] == 1 && s[2] == 1 && s[3] == 1 && s[4] == 1 && s[5] == 1 && s[6] == 1 && s[7] == 1 && s[8] == 1 && s[9] == 1)
			printf("%d %d %d\n", i, j, k);
		memset(s, 0, sizeof(s));
	}
	return 0;
}