湘潭大学 湘大 XTU OJ 1055 整数分类 题解(非常详细)

链接 

整数分类

题目 

Description

按照下面方法对整数x进行分类:如果x是一个个位数,则x属于x类;否则将x的各位上的数码累加,得到一个新的x,依次迭代,可以得到x的所属类。比如说24,2+4=6,则24的类别数是6;39,3+9=12,1+2=3,则39的类别数是3。

输入

       每行输入一个非负整数n,n≤10500,n为0时结束。

输出

       每行输出对应整数的分类数。

Sample Input

24
39
0

Sample Output

6
3

Source

ericxie

代码

#include<iostream>

using namespace std;

int main()
{
	char s[510];
	while(~scanf("%s",s))
	{
		if(s[0]=='0'&&s[1]=='\0')	break;
		
		bool flag=false;
		
		if(s[1]=='\0'&&s[0]!='0')	
		{
			flag=true;
			printf("%d\n",s[0]-'0');
		}
		
		int i=0,q=0;
		while(s[i]!='\0')
		{
			q+=(s[i]-'0');
			i++;
		}
		
		int sum=0;
		while(q>0)
		{
			sum+=(q%10);
			q/=10;
			
			while(sum>9&&q==0)
			{
				q=sum;
				sum=0;
			}
		}
		
		if(flag==false)	printf("%d\n",sum);
	}
	
	return 0;
}

总结

1.难点是代码里面有一个迭代,我们处理一次可能无法得到答案,所以我们需要迭代处理 

while(q>0)
{
	sum+=(q%10);
	q/=10;
			
	while(sum>9&&q==0)
	{
		q=sum;
		sum=0;
	}
}

q是待处理的数据,sum是我们最后的答案,第二个while改成if可能更好理解,意思是交换两个数据,迭代处理

一个数字,我们要求最后一位数字,取模运算(对10取模),去除最后一位数字,除法运算 (除以10)

2.'\0'和0的意思是一样的,表示数组元素是空,‘0’,0,‘\0’,第一个的ASCII码是48,后面两个的ASCII码是0

3.特判

if(s[1]==0&&s[0]!='0')	
{
	flag=true;
	printf("%d\n",s[0]-'0');
}

第二个数组元素是空的,只要第一个数组元素不是'0',就说明输入的数字是个位数,所以可以直接输出答案,注意字符转换成数字需要减去一个48(‘0’)

4.long long:-9223372036854775808~9223372036854775807;(即-2^63~2^63-1) ,19位,简单记为9e18,

int:-2147483648~2147483647;(即-2^31~2^31-1),10位,简单记为2e9

题目要求是500个0,501位,所以我们需要用数组来存储数字,因为超出了我们能存储的数据范围

和高精度加减乘除法类似:高精度加法

5.用一个循环把存在数组里面的元素加起来变成一个整数

int i=0,q=0;
while(s[i]!='\0')
{
	q+=(s[i]-'0');
	i++;
}

6.某一个板块没想清楚,很可能就卡在那里了,所以还是慢慢来,把所有细节想清楚,积累做法

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/88596.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

XXX程序 详细说明

用于记录理解PC程序的程序逻辑 1、程序的作用 根据原作者的说明&#xff08;文件说明.txt&#xff09;&#xff0c;该程序 (PC.py) 的主要作用是提取某一个文件夹中的某个设备 (通过config中的信息看出来是Ag_T_8) 产生的日志文件&#xff0c;然后提取其中某些需要的数据&…

MyCAT命令行监控

9066端口 &#xff0c;用mysql命令行连接 Mysql –utest –ptest –P9066 show help 可显示所有相关管理命令 显示后端物理库连接信息&#xff0c;包括当前连接数&#xff0c;端口 Show backend Show connection 显示当前前端客户端连接情况&#xff0c;已经网络流量信息、…

学习中ChatGPT的17种用法

ChatGPT本质上是一个聊天工具&#xff0c;旧金山的人工智能企业OpenAI于2022年11月正式推出ChatGPT。那么&#xff0c;ChatGPT与其他人工智能产品相比有什么特殊呢&#xff1f; 它除了可以回答结构性的问题&#xff0c;例如语法修正、翻译和查找答案之外。最关键的是它能够去解…

mysql--数据库的操作

数据库&#xff0c;是数据存储的最大单元。 1 创建数据库 create database mydatabase; 每次创建数据库的时候&#xff0c;都会多一个文件夹&#xff0c;关系型数据库是存储在磁盘当中的&#xff0c;所以这时候可以查看新建的数据库 2 指定字符集 MySQL中的字符集转换过程 制…

工程师是怎样对待开源

工程师如何对待开源 本文是笔者作为一个在知名科技企业内从事开源相关工作超过 20 年的工程师&#xff0c;亲身经历或者亲眼目睹很多工程师对待开源软件的优秀实践&#xff0c;也看到了很多 Bad Cases&#xff0c;所以想把自己的一些心得体会写在这里&#xff0c;供工程师进行…

三维模型OBJ格式轻量化压缩处理的数据质量提升方法分析

三维模型OBJ格式轻量化压缩处理的数据质量提升方法分析 在三维模型的OBJ格式轻量化压缩处理过程中&#xff0c;除了减小文件大小和提高加载速度之外&#xff0c;我们也需要考虑如何提升数据质量。以下是几种常见的方法&#xff1a; 1、优化顶点数据&#xff1a;顶点数据是三维…

学习心得04:CUDA

2018年的时候&#xff0c;看过同事使用CUDA。因为工作忙&#xff0c;所以也没请教。 近来买了本入门的CUDA书&#xff0c;学习了一番。有两个心得&#xff1a; 工作拆分。 CUDA是并行计算&#xff0c;也就是大量重复的可拆分的计算。数组最符合这个要求。简单点就是把数组外面…

战略企业家派:企业家愿景形成的过程

战略企业家派&#xff1a;战略的是企业家愿景形成的过程【安志强趣讲267期】 趣讲大白话&#xff1a;企业家才是关键因素 **************************** 战略企业家派的代表是熊彼特 他认为企业家的职责在创新 只有创新才能赢得更多利润 创新是新产品或新生产方式的各种组合 提…

【动手学深度学习】--20.目标检测和边界框

文章目录 目标检测和边界框1.目标检测2.边界框 目标检测和边界框 学习视频&#xff1a;物体检测和数据集【动手学深度学习v2】 官方笔记&#xff1a;目标检测和边界框 在图像分类任务中&#xff0c;我们假设图像中只有一个主要物体对象&#xff0c;我们只关注如何识别其类别…

CTFshow——web入门——反序列化web254-web278 详细Writeup

前言 在做题之前先简要总结一下知识点 private变量会被序列化为&#xff1a;\x00类名\x00变量名 protected变量会被序列化为: \x00\*\x00变量名 public变量会被序列化为&#xff1a;变量名__sleep() &#xff1a;//在对象被序列化之前运行__wakeup() //将在反序列化之后立即…

ChatGPT提示与技巧分享:如何作出更好的提示2023年8月

​对ChatGPT的一些酷炫技巧感兴趣吗?这里提供了一些可以帮助你充分利用ChatGPT&#xff0c;成为AI工具专家的技巧。 毫无疑问&#xff0c;ChatGPT是目前最广泛使用的人工智能工具之一。它不仅毫不留情地取代了一些特定领域常用的软件小工具&#xff08;如智能对联、经典语录生…

密码学学习笔记(二十):DSA签名与X.509证书

数字签名 下图是一个制作以及使用数字签名过程的通用模型。 假设Bob发送一条消息给Alice&#xff0c;尽管消息并不重要&#xff0c;也不需要保密&#xff0c;但他想让Alice知道消息确实是他本人发的。出于这个目的&#xff0c;Bob利用一个安全的散列函数&#xff0c;比如SHA-…

【C++初阶】list的常见使用操作

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

初探修模的三维模型OBJ格式轻量化压缩的遇到常见问题与处理方法

初探修模的三维模型OBJ格式轻量化压缩的遇到常见问题与处理方法 在对经过修模的三维模型进行OBJ格式轻量化压缩处理的过程中&#xff0c;可能会遇到一些常见问题。以下是一些常见问题以及相应的处理方法&#xff1a; 1、顶点丢失和形状变形&#xff1a;在减小顶点数量的过程中…

k8s 常用命令(三)

1、查看版本信息&#xff1a;kubectl version [rootmaster ~]# kubectl version [rootmaster ~]# kubectl version Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.3", GitCommit:"ca643a4d1f7bfe34773c74f7952…

前端学习记录~2023.8.10~JavaScript重难点实例精讲~第6章 Ajax

第 6 章 Ajax 前言6.1 Ajax的基本原理及执行过程6.1.1 XMLHttpRequest对象&#xff08;1&#xff09;XMLHttpRequest对象的函数&#xff08;2&#xff09;XMLHttpRequest对象的属性 6.1.2 XMLHttpRequest对象生命周期&#xff08;1&#xff09;创建XMLHttpRequest对象&#xff…

Django基础3——视图函数

文章目录 一、基本了解1.1 Django内置函数1.2 http请求流程 二、HttpRequest对象&#xff08;接受客户端请求&#xff09;2.1 常用属性2.2 常用方法2.3 服务端接收URL参数2.4 QueryDict对象2.5 案例2.5.1 表单GET提交2.5.2 表单POST提交2.5.3 上传文件 三、HttpResponse对象&am…

OnePlus Open可折叠手机:规格、价格、发布日期等详细信息汇总!

我们知道OnePlus可折叠手机即将问世,无论它是否被命名为OnePlus Open。我们迫不及待地想让它到来,为该公司再添一根弦,为最好的可折叠手机增添一个新的竞争对手。 OnePlus以前没有生产过任何可折叠产品,但它确实拥有合作伙伴公司Oppo的丰富知识,并可以向三星、摩托罗拉和…

【C语言】基础知识杂记(整理自用)

前言 之前一直在学新知识&#xff0c;最近打算复习一下之前学的&#xff0c;所以写了这篇文章&#xff0c;记录一下不熟练的知识点&#xff0c;自用&#xff0c;对大家帮助可能不是很大。 double类型与float类型 编译器默认7.0为double类型 在数据后加一个f&#xff0c;编译…

机器人远程控制软件设计

机器人远程控制软件设计 That’s all.