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; } };