1109: 数根(函数专题)

题目描述

输入一个正整数,输出该数的数根。数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。

要求使用函数,定义函数digitSum(int n)求n的各位数字和,其余功能在main()函数中实现。

int digitSum(int n)

{

//函数返回n的各位数字之和

}

对于C/C++代码的提交,本题要求必须通过定义digitSum函数和main函数实现,否则,提交编译错误,本题需要提交完整程序代码。

输入

输入一个int范围内的正整数n

输出

输出n的数根

样例输入

39

样例输出

3
#include<stdio.h>
int digitSum(int n)
 { int s=0;
   while(n!=0)
   {s+=n%10;
    n/=10;}
   if(s>=10)
    digitSum(s);
    else
    printf("%d",s);
    return 0;}

 int main()
 {
     int x;
     scanf("%d",&x);
     digitSum(x);
     return 0;

 }

原文地址:https://www.cnblogs.com/binanry/p/10017350.html

时间: 2024-10-11 15:14:23

1109: 数根(函数专题)的相关文章

Openjudge-NOI题库-数根

题目描述 Description 数根可以通过把一个数的各个位上的数字加起来得到.如果得到的数是一位数,那么这个数就是数根.如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来.如此进行下去,直到得到是一位数为止. 比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根.再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根. 输入输出格式 Input/output 输入格式: 一个正整数(小于1

实现按行读取文件,把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出。

/* 2 编写一个业务函数,实现按行读取文件.把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出. 函数原型有两个,任意选择其一 要求1:请自己任意选择一个接口(函数),并实现功能:70分 要求2:编写测试用例.30分 要求3:自己编写内存释放函数 */ /********************************************************************** * 版权所有 (C)2015, Wu Yingqiang. * * 文件名称:ReadFi

C语言利用va_list、va_start、va_end、va_arg宏定义可变參数的函数

在定义可变參数的函数之前,先来理解一下函数參数的传递原理: 1.函数參数是以栈这样的数据结构来存取的,在函数參数列表中,从右至左依次入栈. 2.參数的内存存放格式:參数的内存地址存放在内存的堆栈段中,在运行函数的时候,从最后一个(最右边)參数開始入栈.因此栈底高地址,栈顶低地址,举个样例说明一下: void test(int a, float b, char c); 那么,在调用test函数的时候,实參char c先进栈,然后是float b,最后才是int a,因此在内存中变量的存放次序是c-

Digital root(数根)

关于digital root可以参考维基百科,这里给出基本定义和性质. 一.定义 数字根(Digital Root)就是把一个数的各位数字相加,再将所得数的各位数字相加,直到所得数为一位数字为止.而这个一位数便是原来数字的数字根.适用范围为正整数和零.例如:65536,6+5+5+3+6=25,2+5=7,故数根为7. 二.性质 1. 任何数加减9的数字根还是它本身. 2. 9乘任何数字的数字根都是9. 3. 数字根的三则运算 (1). 两数之和的数字根等于这两个数的数字根的和数字根 (2).

[hdu5389 Zero Escape]数根的性质,DP

题意:把n个数(1-9)放到A集合和B集合里面去,使得A集合里面的数的数根为a,B集合里面的数的数根为b,也可以只放在A或B任一个集合里面.求方法总数.比如A={2,4,5},则A的数根为[2+4+5]=[11]=[2]=2 思路:一个数为a,则它的数根b=(a-1)%9+1=(digit-1)%9+1,digit是a的十进制各位上的数的和.如果存在解,那么任选一些数放到A集合里面,使得A集合的数根为a,那么B集合的数根一定为b.由公式可知,数根可以转化为余数来做,令dp[i][x]表示考虑前i

HDU-1013-Digital Roots(Java &amp;&amp; 大数 &amp;&amp; 数根)

Digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 57047    Accepted Submission(s): 17799 Problem Description The digital root of a positive integer is found by summing the digits of

如何证明一个数的数根(digital root)就是它对9的余数?

数根就是不断地求这个数的各位数之和,直到求到个位数为止.所以数根一定和该数模9同余,但是数根又是大于零小于10的,所以数根模9的余数就是它本身,也就是说该数模9之后余数就是数根. 证明: 假设有一个n位的10进制数,我们写成,其中表示从低到高的每一位因为 那么 也就是一个数和它的各数位之和的模9相同.不如我们把这个操作记为f即也就是所以也就是说每做一次这样的操作,它对于9的模始终是不变的所以最终求出的数根和原数对9的模相同. 例子:(12345) % 9 = (1 + 2 + 3 + 4 + 5

1107: 回文数猜想(函数专题)

题目描述 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数,则重复上述步骤,一直到获得回文数为止.例如:68变成154(68+86),再变成605(154+451),最后变成1111(605+506),而1111是回文数.于是有数学家提出一个猜想:不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数.至今为止还不知道这个猜想是对还是错.现在请你编

1105: 判断友好数对(函数专题)

题目描述 输入两个正整数m和n,顺序输出m到n之间的所有友好数对. 如果两个整数的所有正因子之和(包括1,不包括自身)等于对方,就称这对数是友好的.例如:1184和1210是友好数对,因为 1184的因子之和为1+2+4+8+16+32+37+74+148+296+592=1210 1210的因子之和为1+2+5+10+11+22+55+110+121+242+605=1184 要求程序定义一个facsum ()函数和一个main()函数,facsum ()函数计算并返回n的所有正因子之和,其余