2009-02-08
拙作bignumライブラリを使って昨日のMedium問題を解いてみる
library | |
![]()
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