2008-12-26
SRM398 Div1 Easy: CountExpressions
夜中ですが。目がさめたので練習でもするかと思い
答えが合わないのでおかしいと思ったらaを上書きしまくってた件
投稿まで11分超かかった...
class CountExpressions {
int op(int x,int y,int opid){
int val=0;
switch(opid){
case 0: val=x+y;break;
case 1: val=x-y;break;
case 2: val=x*y;break;
}
return val;
}
public:
int calcExpressions(int x, int y, int val) {
int cnt=0;
vector<int> n(4); n[0]=n[1]=min(x,y); n[2]=n[3]=max(x,y);
while(1){
int a=n[0];
rep(op1,3) {
int k=a;
a=op(a,n[1],op1);
rep(op2,3) {
int j=a;
a=op(a,n[2],op2);
rep(op3,3) {
int i=a;
a=op(a,n[3],op3);
if (a==val) cnt++;
a=i;
}
a=j;
}
a=k;
}
if(!next_permutation(all(n)))break;
}
return cnt;
}
};
コメント
トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/n4_t/20081226