The Fourth Dimension Space

枯叶北风寒,忽然年以残,念往昔,语默心酸。二十光阴无一物,韶光贱,寐难安; 不畏形影单,道途阻且慢,哪曲折,如渡飞湍。斩浪劈波酬壮志,同把酒,共言欢! -如梦令

所有数位相加

 

/*==================================================*\
| 所有数位相加
| 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);
}

方法二:公式 【不太明白
int dig(int x)return (x+8)%9+1; }//晕 不是很容易懂么 不是总在mod 9的区间中么 特殊处理下 0-8 即可。。。

posted on 2010-04-23 17:59 abilitytao 阅读(273) 评论(1)  编辑 收藏 引用

评论

# re: 所有数位相加 2010-04-24 22:52 flxing

数字根
int dig(int x){ return (x+8)%9+1; }
是为了处理mod9 等于0的情况  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理