2009-01-17
SRM367 Div1 Easy: ObtainingDigitK
速攻でsubmitできた(248.28point)、と思ったら問題読めてなかった。問題文のテストケースは通るがFailed System Test...
- 場合分けしようかと思ったが、全桁計算した方が確実な気が
- 二度目のsubmit(148.80point)でPassed System Test
#define rep(var,n) for(int var=0;var<(n);var++)
class ObtainingDigitK {
vector<int> ds;
int l,k_;
bool inc(){
for(int i=l;i>=0;i--){
if(ds[i]==9){
ds[i]=0;
if(k_==0) return true;
}else{
ds[i]++;
return (ds[i]==k_);
}
}
return false;
}
public:
int minNumberToAdd(string originalNumber, int k) {
l=originalNumber.length(); k_=k;
ds.resize(l+1);
ds[0]=0;
rep(i,l) {
ds[i+1]=originalNumber[i]-'0';
if(ds[i+1]==k) return 0;
}
for(int i=1;i<=10;i++){
//cout << "ds: " << ds << endl;
if(inc()) return i;
}
return 222;
}
};
コメント
トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/n4_t/20090117