题目描述
给你 nn 根火柴棍,你可以拼出多少个形如 A+B=C 的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。用火柴棍拼数字 0∼9 的拼法如图所示:
注意:
- 加号与等号各自需要两根火柴棍;
- 如果 A≠BA=B,则 A+B=C 与 B+A=C 视为不同的等式(A,B,C≥0);
- n 根火柴棍必须全部用上。
输入格式
一个整数 n(1≤n≤24)。
输出格式
一个整数,能拼成的不同等式的数目。
输入输出样例
输入 #1
14
输出 #1
2
这题的话,他说n<=24,那么这个假设不出现极端情况,每一个加数都应该在4位及以内。我先做了一个记着0-9所用火柴棒的个数,然后写一个返回火柴棒的函数。下面有,自己看,只要懂c++就能理解。其实就是把一个数每一位都剥下来,返回每一位用的火柴棒的和。
两重循环,枚举加数,在用上面的函数算两个加数、和所用的火柴棒之和,看如果等于n-4,就++ans。
#include<cstdio>
int num[11]={6,2,5,5,4,5,6,3,7,6};
int s(int x)
{
if(x==0)return num[0];
int ans=0;
while(x!=0)
{
int t=x%10;
ans+=num[t];
x/=10;
}
return ans;
}
int main()
{
int n,total=0;
scanf("%d",&n);
for(int i=0;i<=1000;++i)
{
for(int j=0;j<=1000;++j)
{
if(s(i)+s(j)+s(i+j)+4==n)
{
++total;
}
}
}
printf("%d",total);
return 0;
}
在百忙之中写一篇题解也比较辛苦,麻烦拿拿你们皇帝般的纤纤玉手帮我点点赞。