xtuoj 整数分类

题目

思路

首先由输入的数据就可以看出,我们应该以字符串的形式读入,然后根据题意,只有在个位数的时候就是字符串长度len==1时,分好类,类别就是该字符串,如果不是个位数,就计算数码和sum,先初始化为0,由于这里是字母的形式,索引我们将字母-'0'就可以得到原来的数字,然后依次把每个数字加进去。如果数码和>=10,那么就还要计算该数码和的数码和,只不过现在这个数码和已经是数字了,我们就不能用字母的方式了,而是用数字的方式,每次将末尾取出来(%10),然后加到new_sum,去掉末尾(/10),如此重复,直到原来的sum变为0就结束。然后输出结果就是new_sum,只不过我们new_sum定义在while内部,循环一结束就会释放掉,就是我们还是将new_sum的结果赋值给sum,最后输出sum就好了。

代码

cpp 复制代码
#include<stdio.h>
#include<string.h>

char s[505];

int main(){
	while(~scanf("%s",s)){
		if(strcmp(s,"0")==0) return 0;
		int len=strlen(s);
		if(len==1){
			printf("%s\n",s);
			continue;
		}
		int sum=0;
		for(int i=0;i<len;i++){
			sum+=s[i]-'0';
		}
		while(sum>=10){
			int new_sum=0;
			int temp=sum;
			while(temp){
				new_sum+=temp%10;
				temp/=10;
			}
			sum=new_sum;
		}
		printf("%d\n",sum);
	}
	
	return 0;
}
相关推荐
水蓝烟雨几秒前
1931. 用三种不同颜色为网格涂色
算法·leetcode
晨曦夜月26 分钟前
map与unordered_map区别
算法·哈希算法
图码1 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
handler011 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
minglie11 小时前
实数列的常用递推模式
算法
代码小书生1 小时前
math,一个基础的 Python 库!
人工智能·python·算法
AI科技星1 小时前
全域数学·数术本源·高维代数卷(72分册)【乖乖数学】
人工智能·算法·数学建模·数据挖掘·量子计算
生成论实验室2 小时前
《事件关系阴阳博弈动力学:识势应势之道》第一篇:生成正在发生——从《即事经》到事件-关系网络
人工智能·科技·算法·架构·创业创新
漂流瓶jz2 小时前
UVA-1152 和为0的4个值 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·二分查找·题解·aoapc·算法竞赛入门经典·uva
leoufung2 小时前
LeetCode 76:Minimum Window Substring 题解与滑动窗口思维详解
算法·leetcode·职场和发展