ACM输入输出规范&数根
来源:互联网 发布:技嘉的显卡怎么样 知乎 编辑:程序博客网 时间:2024/05/20 22:40
问题描述:
一个正整数的数根可以这样求得:计算该整数的各位数之和,如果结果值是单个数字,如果结果值是单个数字的和,那么这个数就是所求数根;如果结果值是由两位或两位以上的数字组成的数,则继续计算各位的数字的和,直到结果值只有一位数字为止。
例如:正整数24, 2+4=6,则6是24的树根 又如39, 3+9=12,12不是单个数字,故继续计算 1+2=3 。 故39的根为3.
输入:
输入包括多组测试数据,每组测试数据包括一个正整数,并且占一行,输入数据位0时表示输入结束。
输出:
对于每组测试数据,给出对应的输出,并且每组占一行。
输入样例:
24
39
0
输出样例
6
3
这是我在《c程序设计竞赛实训教程》中看到的一个很基础的题目。
之所以写博客记录下它,主要是为了开个头,并且介绍下ACM中输入输出数据格式问题,并且算法的一些思路。
下面来整理下我接触到这题目的想法,可能有点傻...
首先,问题并不难,要做的有这么几点
①正确分组测试,考虑输入结束条件的判断。
②先求所给数组各位数相加的和。
③判断这个相加的和是否是个位数,如果不是,执行第二步,否则就是我们想要的数根。
思路很清晰,问题很简单,上述三步就能解决问题了。
下面逐一分析。
在ACM中,往往要求输入一组或者多组数据,这就要求我们不能输入或者输入无关的语句,严格按照要求去做。
就本题多组数据的输入,有如下的框架
scanf("%ld",&num_1);while (num_1 != 0){ //数据处理语句 //输出结果 scanf("%ld",&num_1); //进行下一组数据测试}
while ( 1 ){ scanf("%ld",&num_1); if ( num_1 == 0) { break; } //数据处理语句 //输出结果}
for (;scanf("%d",&num_1)!=EOF && num_1 != 0;printf(...)){//数据处理语句}
主流的框架应该就是这样的。 都能处理多组数据,可以当做模版记下。
至于第二个问题,要把各位数相加,主要得获取每个位置的数字。
最早想的时候,我一直是想算出这个数有几位,然后通过for循环,先%10求余得到个位数,然后再/10使这个数各位数往后移,常规的想法,计算各个位置的数字。
但是问题出来了,怎么求这个数的位数、? .length函数? 显然在c中,这个不好实现,而在这样的一道简单题目中,不该涉及太多的问题。
于是乎,想呗。
于是乎,就有了新的思路。 没必要先判断位数,直接先%10求余得到个位数,然后再/10使这个数各位数往后移,得到新的数字进行判断,如果大于0,则说明该数还没除尽,即还有数字可以相加。 换个思路,一下简单多了。
至于第三个问题,更简单了。 得到的新数字在大循环里面判断是否大于10.然后进行相应处理。
讲到这里,应该没什么问题了,问题不难,当是练手的。
下面贴上具体代码:
#include<stdio.h>int main ( ){ long num_1, num_2; while (1) { scanf("%ld",&num_1); if ( num_1 == 0 ) { break; } do { num_2 = 0; while (num_1>0) { num_2 += num_1 % 10; num_1 = num_1 / 10; } num_1 = num_2; }while (num_1 >= 10); printf("%ld\n",num_2); }}
很简单的问题,c算法的开始。 加油,与君共勉。
水平有限,如果错误,欢迎指正。
- ACM输入输出规范&数根
- ACM输入输出
- ACM 输入输出
- acm 输入输出
- acm输入输出
- ACM输入输出
- ACM输入输出
- ACM输入输出
- 关于ACM的输入输出
- ACM之输入输出
- ACM的输入输出
- ACM入门之输入输出
- ACM输入输出技术总结
- ACM输入输出格式
- java acm输入输出
- acm文件的输入输出
- ACM之Java输入输出
- ACM输入输出格式总结
- K&R学习笔记 第二章
- hdu 2602 (01背包)
- 5个人的年龄(递推)
- RUP和IPD流程的优缺点
- 海量数据处理专题(三)——Hash
- ACM输入输出规范&数根
- 递推的几个经典例子
- js日期格式化
- 产品开发的组织架构和开发管理
- 【18上】System,Runtime,Date,Calendar,Math-Random类的应用
- 制作ubuntu/xubuntu U盘引导
- 集成产品开发过程及其概念模型
- 学习资源(update ... ing)
- 存储快照技术及各种存储快照技术的比较