Rust練習問題:数の整除

問題文 定理:二桁以上の正整数であれば、その一の位を取り除いて、残った数を前記一の位の数字の五倍で割ったら、残りの数が17の倍数の場合かつその場合に限って、元の数も17の倍数である。 例えば、34が17の場合である。なぜなら、3-20=-17が17の倍数である。201は17の倍数ではない。なぜなら、20-5=15は17の倍数ではない。一個正整数nを入力して、あなたの任務はこれが17の倍数であるかを判断することだ。 入力フォーマット 入力ファイルは最多で10セットのテストデータを有する。一セットのテストデータは一行を占める。その行は一個の整数n(1<=n<=10^100)のみがあり、判断待ちの正整数を表す。n=0であれば、終了を意味し、この行を処理すべきではない。 出力フォーマット 一セットのテストデータに対して一行を出力して、相応のnが17の倍数であるかを表す。1が肯定を表し、0が否定を表す。 入力サンプル 出力サンプル 分析 この問題の難点は、nの範囲にある。64-bitの整数型を使っても、表示範囲が最大で20桁の十進数くらいになる。100桁まで昇るnとしても使えない。つまり、プログラミング言語のビルトイン型では、nを表現できない。したがって、nを表現できる型またはそれに類するものを作らないといけない。 また、前記定理によると、nが17の倍数であるかは、nより一桁小さい別の整数で判定できる。 つまり、$n=n_0$が17の倍数という問題が下記の問題に相当する。・$n_1$が17の倍数であるか、さらに次の問題に相当する。・$n_2$が17の倍数であるか、さらに次の問題に相当する。・$n_3$が17の倍数であるか、さらに次の問題に相当する。・……そして、$n_1 > 10 n_2 > 10^2 n_3 > 10^3 n_4 > ……$.

Rust練習問題:弟の算数検査

問題文 弟は100以内の足し算と引き算をやりました。チャックしてあげてください。核問題の形式はa+b=c或いはa-b=c、どれも100を超えない非負整数です。cは弟が算出した回答で、200以内の比数整数であるか、一個の「?」かです。「?」は回答不能を意味します。 入力形式 入力は100行以内とし、EOF記号で終了します。一行ごとに、一問があります。形式は前述規定に則し、いかなるスペースを含みません。入力されたすべての整数に左に不要な0をつけていません。 出力形式 一行のみを出力します。一個の非負整数のみが出て、つまり、弟が正解した問題の数。 入力サンプル 1+2=33-1=56+7=?99-0=99 回答案