Hatena::Grouptopcoder

naoya_t@topcoder RSSフィード

2008-12-26

SRM398 Div1 Easy: CountExpressions

| 03:20 | SRM398 Div1 Easy: CountExpressions - naoya_t@topcoder を含むブックマーク はてなブックマーク - SRM398 Div1 Easy: CountExpressions - naoya_t@topcoder SRM398 Div1 Easy: CountExpressions - naoya_t@topcoder のブックマークコメント

夜中ですが。目がさめたので練習でもするかと思い

答えが合わないのでおかしいと思ったら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;
  }
};