首页 > 试题广场 >

大水题

[编程题]大水题
  • 热度指数:11292 时间限制: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
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)
#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 sum(int i){
    if (i > 0){
        return (i%10) + sum(i/10);
    }else{
        return 0;
    }
}
//检查是否是个位数
int check(int a){
    while (a / 10 != 0){
        a = sum(a);
    }
    return a;
}

int main() {
    int a;
    scanf("%d",&a);
    int b = check(a);
    printf("%d",b);
    return 0;
}
//
// Created by Wilbur Lee on 10/7/2024.
//

发表于 2024-07-10 19:29:19 回复(0)
#include <stdio.h>

//函数递归
int DigitSum(int n)
{
    if(n <= 10)
        return n % 10;
    
    //算出位数之和
    int sum = (n % 10)+DigitSum(n / 10);
    //判断位数之和,大于10就重新进行一次位数之和
    if(sum > 10)
        return (sum % 10)+DigitSum(sum / 10);
    
    //到这说明位数之和已经小于10了
    return sum;
}

int main() {
    int n;
    scanf("%d", &n);
    
    int count = DigitSum(n);
    printf("%d", count);

    return 0;
}

发表于 2024-06-23 19:03:12 回复(0)
#include <stdio.h>

int Magic(int  x)
{
    int sum = 0;
    while(x > 10)
    {
        sum = 0;
        while(x > 0)
        {
            sum += x % 10;
            x /= 10;
        }
        x = sum;
    }
    return x;
}

int main() 
{
    int x = 0;
    int ret= 0;

    scanf("%d", &x);

    ret = Magic(x);

    printf("%d\n", ret);

    return 0;
}

编辑于 2024-03-28 19:16:34 回复(0)
#include <stdio.h>
#include <math.h>

long count_num(long n);

int main() {
    long n;
    scanf("%ld", &n);
    while (n > 9) {
        n = count_num(n);
    }
    printf("%ld", n);
    return 0;
}

long count_num(long i) {
    long sum = 0;
    while (i) {
        sum += i % 10;
        i /= 10;
    }
    return sum;
}

发表于 2024-02-21 20:22:42 回复(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 fun(int n) 
{
    int sum = 0;
    while (n) 
    {
        int a = n % 10;
        sum += a;
        n /= 10;
    }
    if (sum / 10 == 0) 
        return sum;
    else
        return fun(sum);

}

int main() {
    int n = 0;
    scanf("%d", &n);
    int ret = fun(n);
    printf("%d", ret);
    return 0;
}

发表于 2023-11-21 19:30:42 回复(0)
#include <stdio.h>
int balala(int n)
{
    int sum = 0;
    while(n)
    {
        int k = n%10;
        n/=10;
        sum += k;
    }
    if(sum<10)
    {
        return sum;
    }
    else {
    return balala(sum);
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    int ret = balala(n);
    printf("%d",ret);
    return 0;
}

发表于 2023-11-17 10:16:53 回复(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 add(int n)
{
    int sum = 0;
    while (n)
    {
        sum+=n%10;
        n/=10;
    }
    return sum;
}
int main()
{
    int n = 0;
    scanf("%d",&n);
    while(n>9)
    {
        n = add(n);
    }
    printf("%d",n);
    return 0;
}

发表于 2023-05-19 18:16:48 回复(0)
#include <stdio.h>
int GetAllBitsNum(long long* n);

int main() {
    long long n;
    while (scanf("%lld", &n) != EOF) {
        int sum = GetAllBitsNum(&n);
        printf("%d\n", sum);
    }
    return 0;
}

int GetAllBitsNum(long long* n) {
    int res;
    long long tmp;

    // 循环至少要执行一次
    do {
        // res值归0,重新开始计算
        res = 0;
        while (*n > 0) {
            tmp = *n % 10;
            res += tmp;
            *n /= 10;
        }

        if (res >= 10) {
            // 上述循环过后*n的值已为0,这里用res给*n重新赋值
            *n = res;
        }
    } while (res >= 10);

    return res;
}
发表于 2023-03-09 09:26:17 回复(0)
#include <stdio.h>
void transform(int num);

int main() {
    int num, result;
    scanf("%d", &num);
    transform(num);
    return 0;
}

void transform(int num){
    int digit, digit_sum = 0;
    while (num) {
        digit = num % 10;
        digit_sum += digit;
        num /= 10;
    }
    if(digit_sum > 9){
        transform(digit_sum);
    } else {
        printf("%d", digit_sum);
    }
}

发表于 2023-02-10 14:00:59 回复(0)
在VS上能跑过在这个上面跑不过不知道为啥
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int ss(int x) {
	int s = 0;
	int x1 = x;
	while (x1) {
		s += x1 % 10;
		x1 /= 10;
	}
	if (s >= 10) {
		ss(s);
	}
	else {
		return s;
	}
}

int main() {
	int n;
	scanf("%d", &n);
	int a = ss(n);
	printf("%d", a);
	return 0;
}


发表于 2022-10-27 14:42:54 回复(1)
#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 result(int x){
    int sum=0;
    while(x>0){
        sum+=x%10;
        x/=10;
    }
    if(sum>10)
        return result(sum);
    else
        return sum;
}
int main(){
    int x=0;
    scanf("%d",&x);
    int s=result(x);
    printf("%d",s);
    return 0;
}

发表于 2022-08-13 12:59:46 回复(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)
#include <stdio.h>
int swzh(int n)
{
    int s = 0;
    while(n > 0)
    {
        s = s+n%10;
        n /= 10;
    }
    return s;
}

int main()
{
    int n;
    scanf("%d", &n);
    while(n >= 10)
        n = swzh(n);
    printf("%d", n);
    return 0;
}

发表于 2022-07-02 10:52:47 回复(0)
#include<stdio.h>
int mysum(int num) {
    int sum = 0;
    while (num) {
        sum += num % 10;
        num /= 10;
    }
    return sum;
}
int main() {
    int n, count;
    scanf("%d", &n);
    count = mysum(n);
    while (count >= 10) {
        count = mysum(count);
    }

    printf("%d\n", count);
}

发表于 2022-06-25 15:24:51 回复(0)

问题信息

上传者:牛客303862号
难度:
30条回答 1703浏览

热门推荐

通过挑战的用户

查看代码
大水题