给你 nn 根火柴棍,你可以拼出多少个形如 A+B=CA+B=C 的等式?等式中的 AA、BB、CC 是用火柴棍拼出的整数(若该数非零,则最高位不能是 00)。用火柴棍拼数字 0sim90∼9 的拼法如图所示:
注意:
-
加号与等号各自需要两根火柴棍;
-
如果 Aneq BA=B,则 A+B=CA+B=C 与 B+A=CB+A=C 视为不同的等式(A,B,Cgeq0A,B,C≥0);
-
nn 根火柴棍必须全部用上。
一个整数 n(1 leq nleq 24)n(1≤n≤24)。
输出格式一个整数,能拼成的不同等式的数目。
输入输出样例输入 #1复制
14
输出 #1复制
2
输入 #2复制
18
输出 #2复制
9说明/提示
【输入输出样例 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。
直接上代码
#includeusing namespace std; int a[]={6,2,5,5,4,5,6,3,7,6}; int cnt(int x) { int gs=0; if(x==0) { return a[0]; } while(x) { gs+=a[x%10]; x/=10; } return gs; } int main() { int n; cin>>n; n-=4; int ans=0; for(int i=0;i<=1000;i++) { for(int j=0;j<=1000;j++) { int k=i+j; if(cnt(i)+cnt(j)+cnt(k)==n) { ans++; } } } cout<



