题目描述
给你 nn 根火柴棍,你可以拼出多少个形如 A+B=CA+B=C 的等式?等式中的 AA、BB、CC 是用火柴棍拼出的整数(若该数非零,则最高位不能是 00)。用火柴棍拼数字 0∼90∼9 的拼法如图所示:
注意:
- 加号与等号各自需要两根火柴棍;
- 如果 A≠BA=B,则 A+B=CA+B=C 与 B+A=CB+A=C 视为不同的等式(A,B,C≥0A,B,C≥0);
- nn 根火柴棍必须全部用上。
输入格式
一个整数 n(1≤n≤24)n(1≤n≤24)。
输出格式
一个整数,能拼成的不同等式的数目。
输入数据 1
14
Copy
输出数据 1
2
Copy
输入数据 2
18
Copy
输出数据 2
9
Copy
提示
【输入输出样例 1 解释】
22 个等式为 0+1=10+1=1 和 1+0=11+0=1。
【输入输出样例 2 解释】
99 个等式为
0+4=40+4=4、0+11=110+11=11、1+10=111+10=11、2+2=42+2=4、2+7=92+7=9、4+0=44+0=4、7+2=97+2=9、10+1=1110+1=11、11+0=1111+0=11。
代码
#include<iostream>
using namespace std;
int counts[10] = {6,2,5,5,4,5,6,3,7,6};
int f(int n)
{
if(n == 0)
{
return 6;
}
int ans = 0;
while(n != 0)
{
ans += counts[n%10];
n/=10;
}
return ans;
}
int main()
{
int n,ans=0;
cin >> n;
for(int a = 0;a < 720;a++)
{
for(int b = 0;b < 720;b++)
{
if(f(a) + f(b) + f(a+b) + 4==n)
{
ans++;
}
}
}
cout << ans;
return 0;
}
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 火柴棒等式
发表评论 取消回复