链接:P1149 [NOIP 2008 提高组] 火柴棒等式 - 洛谷
题目描述
给你 n 根火柴棍,你可以拼出多少个形如 A+B=C 的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。用火柴棍拼数字 0∼9 的拼法如图所示:
注意:
- 加号与等号各自需要两根火柴棍;
- 如果 A=B,则 A+B=C 与 B+A=C 视为不同的等式(A,B,C≥0);
- n 根火柴棍必须全部用上。
输入格式
一个整数 n(1≤n≤24)。
输出格式
一个整数,能拼成的不同等式的数目。
输入输出样例
输入 #1复制运行
14
输出 #1复制运行
2
输入 #2复制运行
18
输出 #2复制运行
9
说明/提示
【输入输出样例 1 解释】
2 个等式为 0+1=1 和 1+0=1。
【输入输出样例 2 解释】
9 个等式为
0+4=4、0+11=11、1+10=11、2+2=4、2+7=9、4+0=4、7+2=9、10+1=11、11+0=11。
noip2008 提高第二题
C++代码如下:
#include<bits/stdc++.h>
using namespace std;
int n;
int ans=0;
int counts[10]={6,2,5,5,4,5,6,3,7,6};
int f(int x){
if(x==0){
return 6;
}
int sum=0;
while(x!=0){
sum+=counts[x%10];
x/=10;
}
return sum;
}
int main(){
cin>>n;
for(int i=0;i<=1000;i++){
for(int j=0;j<=1000;j++){
if(f(i)+f(j)+f(i+j)+4==n){
ans++;
}
}
}
cout<<ans;
return 0;
}