在一种室内互动游戏中,魔术师要每位观众心里想一个3位数abc(a、b、c分别是百位、十位和个位数字),然后魔术师让观众心中记下acb、bac、bca、cab、cba五个数以及这五个数的和值。只要观众说出这个和是多少,则魔术师一定能猜出观众心里想的原数abc是多少。例如观众甲说他计算的和值是1999,则魔术师立即说出他想的数是443,而观众乙说他计算的和值是1998,则魔术师说:“你算错了!”。请编程模拟这个数字魔术游戏。
输入
输入一个正整数。
输出
输出原数abc或者输出“error”(不输出引号)。
输入示例1
1999
输出示例1
443
输入示例2
1998
输出示例2
error
输入示例3
555
输出示例3
111
数据范围
输入输出均为int范围的正整数
简单的穷举法即可解决,或者使用四个三元一次方程来求唯一解,但较为麻烦,
所以我们这里采用第一种方法,即穷举法:
#include <stdio.h>
#include <stdlib.h>
int main() {
int sum;
scanf("%d", &sum);
int a, b, c;
int count = 0;
for (a = 1; a <= 9; a++) {
for (b = 0; b <= 9; b++) {
for (c = 0; c <= 9; c++) {
int acb = a * 100 + c * 10 + b;
int bac = b * 100 + a * 10 + c;
int bca = b * 100 + c * 10 + a;
int cab = c * 100 + a * 10 + b;
int cba = c * 100 + b * 10 + a;
if (acb + bac + bca + cab + cba == sum) {
count++;
if (count == 1) {
printf("%d%d%d\n", a, b, c);
} else {
printf("error\n");
return 0;
}
}
}
}
}
if (count == 0) {
printf("error\n");
}
return 0;
}
解法不唯一,仅供参考