Hatena::Grouptopcoder

naoya_t@topcoder RSSフィード

2009-02-08

拙作bignumライブラリを使って昨日のMedium問題を解いてみる

| 16:51 | 拙作bignumライブラリを使って昨日のMedium問題を解いてみる - naoya_t@topcoder を含むブックマーク はてなブックマーク - 拙作bignumライブラリを使って昨日のMedium問題を解いてみる - naoya_t@topcoder 拙作bignumライブラリを使って昨日のMedium問題を解いてみる - naoya_t@topcoder のブックマークコメント

string replace(const string s, int a, int b){
  stringstream ss;
  int l=s.size();
  for(int i=0;i<l;i++){
    int c=s[i]; ss << (char)((c==a)? b : c);
  }
  return ss.str();
}

char en(int c){
  if (c<10) return '0'+c;
  else return 'A'+(c-10);
}

class HexatridecimalSum {
 public:
  string maximizeSum(vector<string> numbers, int k) {
    vector<bignum> ofs(36);
    rep(i,36) ofs[i]=0;

    bignum sum;
    tr(numbers,it){
      string orig_str = *it;
      bignum b(orig_str,36); sum += b;
      rep(i,36){
        bignum b_(replace(orig_str,en(i),'Z'),36);
        ofs[i] += (b_ - b);
      }
    }
    sort(all(ofs)); reverse(all(ofs));
    rep(i,k) sum += ofs[i];
    return sum.to_s(36);
  }
};

System Testも難なく通りました。

トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/n4_t/20090208