Description有一个未完成的等式1 2 3 4 5 6 7 8 9=N空格内(1前面没有空格)可以填入+,-,也可以不填。 编程找出输入某个整数 N 后使等式成立的所有方案的总数。保证有解。Input该题含有多组测试数据,每组数据为一行,仅一个整数N。Output输出方案总数。Sample Input108Sample Output15 #include<iostream.h>#define OpNo 0 //No operator#define OpAdd 1 //+#define OpSub 2 //-typedef int Operator;long Calc(int Status);int main(){ long t,count,loop; while(cin>>t) { for(loop=0,count=0;loop<6561;loop++) if(Calc(loop) == t) count++; cout<<count<<endl; } return 0;}long Calc(int Status){ long buffer=1,result=0; int currentNum; Operator op,elapsedop=OpNo; for(currentNum=2;currentNum<=9;currentNum++) { op=Status%3; Status/=3; if(OpNo == op) buffer=buffer*10+currentNum; else { if(OpSub == elapsedop) result-=buffer; else result+=buffer; buffer=currentNum; elapsedop=op; } } if(OpSub == elapsedop) result-=buffer; else result+=buffer; return result;}

评论