8466:火柴棒等式
-
描述
-
给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:
注意:
1. 加号与等号各自需要两根火柴棍
2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C≥0)
3. n根火柴棍必须全部用上
输入
- 输入一个整数n(n≤24)。 输出
- 输出能拼成的不同等式的数目。 样例输入
-
5
样例输出
-
0
-
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int num[100],ans1,i,j,n,l; int main() { scanf("%d",&n); num[0]=6; num[1]=2; num[2]=5; num[3]=5; num[4]=4; num[5]=5; num[6]=6; num[7]=3; num[8]=7; num[9]=6; n-=4; if (n<9) { cout<<"0"<<endl; return 0; } for (i=0;i<=1001;i++) for (j=0;j<=i;j++) { int x=i-j; char s1[10],s2[10],s3[10]; sprintf(s1,"%d",i); sprintf(s2,"%d",j); sprintf(s3,"%d",x); int ans=0; for (l=1;l<=strlen(s1);l++) ans+=num[s1[l-1]-48]; for (l=1;l<=strlen(s2);l++) ans+=num[s2[l-1]-48]; for (l=1;l<=strlen(s3);l++) ans+=num[s3[l-1]-48]; if (ans==n) ans1++; } printf("%d",ans1); return 0; }