首页 > 试题广场 >

大水题

[编程题]大水题
  • 热度指数:11268 时间限制: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 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)
#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 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 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)
迭代直至结果小于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)
我只觉得这题文案出的很造业。。。
发表于 2022-04-30 11:33:11 回复(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)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

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

    //循环检验每个位数相加的和是否为个位数 是则跳出循环
    for (int y = 0; y < 10; y++) {
        for (int x = 0; x < 10; x++) {

            he += a % 10;
            a /= 10;

        }

        if (he / 10 == 0) {
            break;
        }
        else
        {
            a = he; he = 0;
        }

    }

    printf("%d", he);

    return 0;
}

发表于 2024-10-28 20:55:42 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();

        int sum = 0;
        do{
            sum = 0;
            for(int i=0 ;i<str.length();i++){
                sum += str.charAt(i)-'0';// 这里记得是减去0 ,不是因为要加减零把字符串变成数字,而是减去ascii码
            }
            str = String.valueOf(sum);
        }while( sum>=10);

        System.out.println(sum);
    }
}

发表于 2024-10-27 21:59:43 回复(0)
#include<stdio.h>

int Add(int n)
{
    int sum=0;
   if(n<10)
   return n;
   else
    {
        sum=n%10+Add(n/10);
        return Add(sum);
    }
}

int main()
{

    int n=0;
    scanf("%d",&n);
   printf("%d",Add(n));
   
    return 0;
}
发表于 2024-10-04 20:48:05 回复(0)
#include <stdio.h>
int function(int x);
int function(int x)
{
    int sum=x;
    while(sum>=10)
    {
        int num=sum;
        int a,s=0;
        while(num>0)
        {
            a=num%10;
            s+=a;       //一开始写成sum+=a;导致陷入死循环
            num/=10;
        }
        sum=s;
    }  
    return sum;
}
int main()
 {
  int n,c;
  scanf("%d",&n);
  if(n<1||n>1e9)
  {
    return 1;
  }
  c=function(n);
  printf("%d",c);
    return 0;
}

发表于 2024-09-29 15:33:59 回复(0)
from functools import reduce
number = eval(input())
def func(n):
    if n<10:
        return n
    else:
        return  func(reduce(lambda y,x: int(x)+int(y),list(str(n))))
print(func(number))

发表于 2024-09-27 14:34:13 回复(0)
#include <stdio.h>
int he(int a){
    int sum=0;
    while(a>0){
        sum+=a%10;
        a=a/10;
    }
    return sum;
}

int main() {
    int n;
    scanf("%d",&n);
    int num;
    num=he(n);
    while(num>=10){
        num=he(num);
    }
    printf("%d",num);
   
    return 0;
}
发表于 2024-07-22 14:18:14 回复(0)

问题信息

上传者:牛客303862号
难度:
70条回答 1655浏览

热门推荐

通过挑战的用户

查看代码
大水题