每日刷题(十五)
蓝桥杯第六届C语言B组省赛习题
习题C:三羊献瑞
图1.jpg
首先可以想到“三”代表数字1,因为十进制数相加,满十进一,这里我设“羊”,“献”,“瑞”这三个分别用a,b,c代替,“祥”,“生”,“辉”,“气”分别用d,e, f, g代替。需要满足dcef + 1abc = 1aecg的条件,嵌套循环可以得到答案
详细C代码如下
#include<stdio.h>
int main()
{
int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0; //dcef + 1abc = 1aecg
for(d = 0; d <= 9; d++)
{
if(d == 1)
d++;
for(c = 0; c <= 9; c++)
{
while(c == d || c == 1)
{
c++;
}
if(c == 10)
break;
for(e = 0; e <= 9; e++)
{
while(e == c || e == d || e == 1)
{
e++;
}
if(e == 10)
break;
for(f = 0; f <= 9; f++)
{
while(f == 1 || f == c || f == d || f == e)
{
f++;
}
if(f == 10)
break;
for(a = 0; a <= 9; a++)
{
while(a == 1 || a == c || a == d || a == e || a == f)
{
a++;
}
if(a == 10)
break;
for(b = 0; b <= 9; b++)
{
while(b == 1 || b == c || b == d || b == e || b == f || b == a)
{
b++;
}
if(b == 10)
break;
for(g = 0; g <= 9; g++)
{
while(g == 1 || g == c || g == d || g == e || g == f || g == a || g == b)
{
g++;
}
if(g == 10)
break;
if(d * 1000 + c * 100 + e * 10 + f + 1000 + a * 100 + b * 10 + c == 10000 + a * 1000 + e * 100 + c * 10 + g)
{
printf("%d%d%d%d\n",1,a,b,c);
printf("%d %d %d %d + 1 %d %d %d = 1 %d %d %d %d \n",d,c,e,f,a,b,c,a,e,c,g);
}
}
}
}
}
}
}
}
return 0;
}
运行结果
所以三羊献瑞所代表的四位数字为1085