所有数位相加

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 添加
公式部分添加限定范围

全部评论

相关推荐

浩浩没烦恼:一二面加起来才一个小时? 我一面就一个小时多了
点赞 评论 收藏
分享
未知的命运:大佬这都找不到我还找啥啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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