所有数位相加

ACM模版

所有数位相加

/*
 *  所有数位相加
 *  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 添加
公式部分添加限定范围

全部评论

相关推荐

二十岁的编程男神王大...:读博吧兄弟,你这绩点太好了,何必转码,另外哈哈哈真见到有括号标出来985的,这个不标注也知道吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务