SRMの過去問も演習録をつけることにした。
問題概要
与えられた整数に対して、各桁の和を計算する。和が一桁になるまでこの操作を繰り返すとき、最後に得られる整数を求めよ。
Div2のような問題だ……
解法
各桁の和が1桁になる(=10未満になる)まで繰り返す操作をそのまま書けばよい。
これは再帰により実装すると書きやすいかもしれない。
int lastDigit(int n)
{
if(n<10)return n;
int m=0;
for(;n;n/=10)m+=n%10;
return lastDigit(m);
}