1> ABC + DEF = GHI 将1-9分别填入9个字母中
int main()
{
int a[10];
int i;
int total = 0; // 记录满足条件等式个数
int book[10]; //记录出现过的数
int sum; // 记录数字出现的个数
for (a[1]=1; a[1]<=9; a[1]++)
for (a[2]=1; a[2]<=9; a[2]++)
for (a[3]=1; a[3]<=9; a[3]++)
for (a[4]=1; a[4]<=9; a[4]++)
for (a[5]=1; a[5]<=9; a[5]++)
for (a[6]=1; a[6]<=9; a[6]++)
for (a[7]=1; a[7]<=9; a[7]++)
for (a[8]=1; a[8]<=9; a[8]++)
for (a[9]=1; a[9]<=9; a[9]++)
{
for (i=1; i<=9; i++) {
book[i] = 0;
}
for (i=1; i<=9; i++) {
book[a[i]] = 1;
}
sum = 0;
for (i=1; i<=9; i++) {
sum += book[i];
}
if (sum == 9 && a[1]*100+a[2]*10+a[3] + a[4]*100+a[5]*10+a[6] == a[7]*100+a[8]*10+a[9]) {
total++;
printf("%d%d%d + %d%d%d = %d%d%d\n",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);
}
}
printf ("total=%d",total/2); // 有重复的 需除以2
return 0;
}
2>火柴棍问题
用火柴棍可以摆出0-9这10个数字,若给出n根火柴棍,能拼出多少个A+B=C这样的等式?(0-9分别需要6255456376根火柴棍,+=各需两跟火柴棍)
int fun(int x)
{
int num = 0;
int a[10] = {6,2,5,5,4,5,6,3,7,6}; // 记录数字所需火柴数
// 计算数字所需火柴个数
while (x/10 != 0) {
num += a[x%10];
x = x/10; //
}
num += a[x]; // 无法进入while循环说明为个位数
return num;
}
int main()
{
int k,count;
int sum = 0;
scanf("%d",&count)
for (int i = 0; i<=1111; i++)
for (int j = 0;j<=1111;j++)
{
k = i+j;
if (fun(i)+fun(j)+fun(k) == count-4) {
printf("%d+%d=%d\n",i,j,k);
sum++;
}
}
printf("共%d种方法",sum);
return 0;
}