Hatena::Grouptopcoder

naoya_t@topcoder RSSフィード

2009-01-17

SRM367 Div1 Easy: ObtainingDigitK

| 04:49 | SRM367 Div1 Easy: ObtainingDigitK - naoya_t@topcoder を含むブックマーク はてなブックマーク - SRM367 Div1 Easy: ObtainingDigitK - naoya_t@topcoder SRM367 Div1 Easy: ObtainingDigitK - naoya_t@topcoder のブックマークコメント

速攻で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;
  }
};
トラックバック - http://topcoder.g.hatena.ne.jp/n4_t/20090117