首页 > 试题广场 >

大水题

[编程题]大水题
  • 热度指数:12208 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}对于一个数,把它所有位上的数字进行加和,得到新的数。
\hspace{15pt}重复执行若干次,直到结果是个位数为止。输出最终的这个个位数。

输入描述:
\hspace{15pt}在一行上输入一个整数 n \left( 1 \leq n \leq 10^9 \right) 代表初始数字。


输出描述:
\hspace{15pt}在一行上输出一个整数,代表最终的结果。
示例1

输入

38

输出

2

说明

\hspace{15pt}对于这一组测试数据,操作过程为 38 \to 3 + 8 = 11 \to 1 + 1 = 2
示例2

输入

1

输出

1
#include <stdio.h>

int compute(int num){
    int sum = 0;
    while(num){
        int t = num % 10;
        num /= 10;
        sum += t;
    }
    return sum;
}
int main(){
    int n, sum = 0;
    scanf("%d", &n);
    sum = compute(n); //第一轮
    while(sum > 9){
        sum = compute(sum);
    }
    printf("%d", sum);
    return 0;
}

发表于 2022-06-15 19:00:36 回复(0)
#include <iostream>
using namespace std;
int sum(int x)
{
    int res = 0;
    while (x)
    {
        int e = x % 10;
        res += e;
        x /= 10;
    }
    return res;
}

int main()
{
    int x;
    cin >> x;
    int t = sum(x);
    while (t >= 10) t = sum(t);
    cout << t << endl;
}

发表于 2022-02-26 16:24:28 回复(0)
#include <stdio.h>
int f(int n// 位数之和的函数
{
    if(n==0return 0// 当无更高位时返回0
    return n%10+f(n/10); // 运用递归
}
int main()
{
    int n;
    scanf("%d",&n);
    while(n/10// 判断是否为个位数
        n=f(n); // 将每次变化后的值赋值给n
    printf("%d",n);
    return 0;
}
发表于 2022-09-29 15:40:39 回复(0)
#include<stdio.h>
int sum(int num)
{
    int n=0;
    for( n=0;num>0;num/=10)
    {
        if(num<10)
            return n+num;
        else
            n+=num%10;
    }
    return num;
}
int main()
{
    int n=0;
    scanf("%d",&n);
    while(n>10)
        n=sum(n);
    printf("%d\n",n);
    return 0;
}

发表于 2022-03-10 15:38:21 回复(0)
#include <stdio.h>
int xiaoyushi(int n)
{
    while(n>=10)
    {
        int sum=0;
        while(n>0)
        {
            sum+=(n%10);
            n=n/10;
        }
        n=sum;
    }
return n;
}
int main()
 {
    int num;
    scanf("%d",&num);
    int ret=xiaoyushi(num);
    printf ("%d",ret);
    return 0;
}
发表于 2025-12-09 17:50:43 回复(0)
迭代直至结果小于10
n = int(input())
while n > 10:
    n = sum(map(int,list(str(n))))
print(n)


编辑于 2024-02-12 21:00:08 回复(0)
#include <stdio.h>
int getNumer(int n){
    while(n>9){
        n=n%10+n/10;
        if(n>=0&&n<=9){
            break;
        }
    }
        return n;
}
int main() {
    int n=0;
    scanf("%d",&n);
    printf("%d",getNumer(n));
    return 0;
}

编辑于 2024-02-11 19:13:37 回复(0)
#include <stdio.h>

int f(int n)
{
    int a=0;
    while(n!=0)
    {
        a+=n%10;
        n=n/10;
    }
    return a;
}

int main() {
    int n,s;
    scanf("%d",&n);
    while(n/10!=0)
    {
        n=f(n);
    }
    printf("%d",n);
    return 0;
}

发表于 2023-08-24 04:13:38 回复(0)
#include <stdio.h>
int f(int n);
int main() {
    int n;
    scanf("%d",&n);
    printf("%d",f(n));
    return 0;
}
//递归函数
int f(int n){
    if(n<=9){
        return n;
    }else{
        return f(f(n/10)+n%10);
    }
}

发表于 2022-09-23 13:43:29 回复(0)
#include<stdio.h>
int DaBianShen(int num) {
    int sum = 0;
    while (num) {
        sum += num % 10;
        num /= 10;
    }
    if (sum > 9)
        return DaBianShen(sum);
    else
        return sum;
}
int main() {
    int num = 0;
    scanf("%d", &num);
    printf("%d\n", DaBianShen(num));
    return 0;
}

发表于 2022-08-11 09:46:51 回复(0)
我只觉得这题文案出的很造业。。。
发表于 2022-04-30 11:33:11 回复(0)
#include<iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    while (n / 10) {
        int tmp = n, res = 0;
        while (tmp) {
            res += tmp % 10;
            tmp /= 10;
        }
        n = res;
    }
    cout << n;
    return 0;
}

发表于 2022-03-31 21:24:27 回复(0)
#include <iostream>
using namespace std;
int cl(int cnt){
    while(cnt>=10){
        int temp=0;
        while(cnt){
            temp+=cnt%10;
            cnt/=10;
        }
        cnt=temp;   
    }
    return cnt;
}
int main() {
    int a;
    cin>>a;
    int result=cl(a);
    cout<<result;
}

发表于 2025-11-08 22:35:39 回复(0)
#include <stdio.h>

int main() 
{
    int n;
    scanf("%d", &n);
    
    while(n%10 != n)
    {
        int tmp = n;
        int s = 0;
        while (tmp)
        { 
            s = s + tmp%10;
            tmp = tmp / 10;
        }
        n = s;
    }
    printf("%d", n);

    return 0;
}

发表于 2025-09-10 12:50:40 回复(0)
#include <stdio.h>

int main() {
    int a, b;
    scanf("%d",&a);
    for(int i=1;i<=6;i++){
        int k=0;
        for(int j=1;j<=10;j++){
            k+=a%10;
            a=a/10;
        }
        if(k<10){
           
            printf("%d",k);
            break;
        }
        a=k;
    }
   
    return 0;
}
发表于 2025-08-15 23:27:39 回复(0)
def func(n):
    if n < 10:
        return n
    else:
        n = sum([int(i) for i in str(n)])
        return func(n)     # 迭代调用
n = int(input())
print(func(n))
发表于 2025-07-11 22:31:25 回复(0)
#include <stdio.h>

int result(int n)
{
    if (n >= 10)
    {
       n = (n % 10) + (result(n / 10));
    }
    return n;    
}

int main()
{
    int n = 0;
    scanf("%d", &n);
    int sum = n;
    do
        sum = result(sum);
    while (sum > 10);
    
    printf("%d\n", sum);

    return 0;
}

发表于 2025-06-24 17:50:28 回复(0)
#include <iostream>
using namespace std;

int GetSum( int n) {
    int  res = 0;
    while (n) {    
        res += n % 10;
        n /= 10;
    }

    return res;
}


int main() {
    int n;
    cin >> n;
    int t = GetSum(n);
    while (t >= 10) t = GetSum(t);
    cout << t << endl;


}
// 64 位输出请用 printf("%lld")
发表于 2025-03-22 17:20:59 回复(0)
#include <stdio.h>
#include <string.h>

int add(int val){
    int sum = 0;
    while(val>9){
        sum += val%10;
        val = val/10;      
    }
     sum+=val;
    if (sum>9) {
    return add(sum);
    }
    return sum;

}

int main() {
    int a;
    scanf("%d",&a);

    int ret =add(a);
    printf("%d ",ret);

    return 0;

}
发表于 2025-03-11 17:13:30 回复(0)
int BC152(int x) {
    //求x的各位之和
    int i = 0;
    while (x) {
        i += x % 10;
        x /= 10;
    }
    return i;
}

int main() {
    int x = 0;
    scanf("%d", &x);
    int y = 0;
    //用y存储x的各位之和,若和大于9,则重复循环
    do {
        y = BC152(x);
        x = y;
    } while (y > 9);
    printf("%d", y);
    return 0;
}
发表于 2025-01-16 17:09:27 回复(0)

问题信息

上传者:牛客303862号
难度:
76条回答 2262浏览

热门推荐

通过挑战的用户

查看代码
大水题