计蒜客-火柴棍游戏

    xiaoxiao2021-03-25  215

    给你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根火柴棍必须全部用上 输入文件matches.in共一行,又一个整数n(n< =24)。 输出文件matches.out共一行,表示能拼成的不同等式的数目。

    【输入输出样例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

    样例输入

    【输入样例1】 14 【输入样例2】 18

    样例输出 【输出样例1】 2 【输出样例2】 9

    #include"iostream" using namespace std; int main() { int n; int ai[2000]={6,2,5,5,4,5,6,3,7,6}; for(int i=10;i<100;i++) { int a=i%10; int b=i/10; ai[i]=ai[a]+ai[b]; } for(int i=100;i<2000;i++) { int a=i%10; int b=(i/10)%10; int c=i/100; ai[i]=ai[a]+ai[b]+ai[c]; } while(cin>>n) { int num=0; for(int i=0;i<1000;i++) { for(int j=0;j<1000;j++) { int sum=ai[i]+ai[j]+ai[i+j]+4; if(sum==n) num++; } } cout<<num<<endl; } return 0; }

    先打表,再枚举

    转载请注明原文地址: https://ju.6miu.com/read-2067.html

    最新回复(0)