POJ 1519 Digital Roots

题目大意:

        一个数的数根是指将该数的各位数字相加,如果结果为一个个位数,则该各位数就是该数的数根,如果结果不止一位,则重复上述动作,将该结果个位数字相加得到一个新结果,如果新结果是个位数则该个位数就是该数的数根,否则重复上述动作,例如24的数根就是6,39个位数字之和为12(非个位数),因此再将12的各位相加得到3,3是一个个位数,因此3就是39的数根。

        现有多个测例,每个测例中给出一个数字n(int型正整数,测例以n=0表示结束),对于每个测例都输出n的数根。

题目链接

注释代码:

/*                       
 * Problem ID : POJ 1519 Digital Roots 
 * Author     : Lirx.t.Una                       
 * Language   : C             
 * Run Time   : 0 ms                       
 * Run Memory : 152 KB                       
*/

#include <stdio.h>

//由数论理论得
//一个数的各位之和为sum
//如果sum % 9 = 0则树根为9否则为sum % 9

int
main() {

	char	d;//digit,保存每一位数字
	int		sum;//各位数字之和
	int		root;//树根

	while ( ( d = getchar() ) != '0' ) {
	
		sum = d - '0';
		while ( ( d = getchar() ) != '\n' )
			sum += d - '0';

		printf("%d\n", ( root = sum % 9 ) ? root : 9);
	}

	return 0;
}

无注释代码:

#include <stdio.h>

int
main() {

	char	d;
	int		sum;
	int		root;

	while ( ( d = getchar() ) != '0' ) {
	
		sum = d - '0';
		while ( ( d = getchar() ) != '\n' )
			sum += d - '0';

		printf("%d\n", ( root = sum % 9 ) ? root : 9);
	}

	return 0;
}

单词解释:

yield:vt, 产出,屈服

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值