SRM148 Div.2 Easy DivisorDigits
今日学校のパソコンでTopCoderできるか試してみました…
…
サーバーの関係でArenaからログインできませんでしたorz
問題文に注意
今回はこんな感じ
PROBLEM STATEMENT Create a class DivisorDigits containing a method howMany which takes an int number and returns how many digits in number divide evenly into number itself. DEFINITION Class:DivisorDigits Method:howMany Parameters:int Returns:int Method signature:int howMany(int number) NOTES
- No number is divisible by 0.
- number will be between 10000 and 999999999.
え?簡単というか短いじゃん!
って思うかもしれませんが、僕は見事にひっかかりました。
こんなとこの問題なんだから、含まれてる数字の合計を割るんだと思ったら・・・
与えられた数字を数字に含まれる0~9の数字で割る問題だった。
立ちが悪いのは、引っかかった解釈でもサンプルの0と1は通ってしまうんですよね(笑)
さて、そんで正解のコード。
class DivisorDigits { public: int howMany(int number) { stringstream ss; ss << number; string num = ss.str(); sort(num.begin(), num.end()); int count=0; for (int i=0; i<num.length(); i++) { if (num[i]-48 != 0 && number % (num[i]-48) ==0) { // cout << num[i] << endl; count++; } } return count; } };
string stream出てきましたね。
忘れてたんでまたググル羽目になってしまいましたが・・・
以上です。
p.s.
数学ガール読み終わりましたよ!めっちゃおもしろかったです。