所有数位相加
/*
* 所有数位相加
* dig(x) := x if 0 <= x <= 9
* dig(x) := dig(sum of digits of x) if x >= 10
*/
模拟
int dig(int x)
{
if ( x < 10 )
{
return x;
}
int sum = 0;
while (x)
{
sum += x % 10;
x /= 10;
}
return dig(sum);
}
公式(结果为1~9)
// 类似于所有数位相加 MOD 9 的结果,不过结果将 0 的情况结果转移成了 9,比较鸡肋的写法,应用场景不多
int dig(int x)
{
return (x + 8) % 9 + 1;
}
2017.5.4 添加
公式部分添加限定范围