F - Digital Roots HUOJ

这篇具有很好参考价值的文章主要介绍了F - Digital Roots HUOJ。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

F - Digital Roots HUOJ,数据结构,算法

题目

The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the process is repeated. This is continued as long as necessary to obtain a single digit.
正整数的数字根是通过对整数的数字求和来找到的。如果结果值为个位数,则该数字为数字根。如果结果值包含两个或多个数字,则对这些数字求和并重复该过程。只要有必要,就会继续这样做以获得一位数。

For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding the 3 and the 9 yields 12. Since 12 is not a single digit, the process must be repeated. Adding the 1 and the 2 yeilds 3, a single digit and also the digital root of 39.
例如,考虑正整数 24。将 2 和 4 相加得到的值为 6。由于 6 是个位数,因此 6 是 24 的数字根。现在考虑正整数 39。将 3 和 9 相加得到 12。由于 12 不是个位数,因此必须重复该过程。将 1 和 2 相加,等于 3,一个位数,还有 39 的数字根。

Input

The input file will contain a list of positive integers, one per line. The end of the input will be indicated by an integer value of zero.
输入文件将包含一个正整数列表,每行一个。输入的末尾将由零的整数值表示。

Output

For each integer in the input, output its digital root on a separate line of the output.
对于输入中的每个整数,在输出的单独行上输出其数字根。

Sample

Inputcopy Outputcopy
24
39
0
6
3

思路

如果单纯的按数字来算,由于数据范围未知,如果按数字来算,一次次的计算很复杂,并且容易造成时间超限,所以本题我们采用超过一个就变一次,这样可以降低时间复杂度,从而达到题目想要的目的。具体代码如下所示。

代码实现

#include <bits/stdc++.h>
using namespace std;
int main() {
	string s;//将数字看成字符串
	int i, t ;
	while (cin >> s, s != "0") {//多实例
		t = s[0] - '0';//将t设置成第一个数
		for (i = 1; i < s.size(); i++) {
			t += s[i] - '0';//从第二个数开始加
			while (t > 9) {
				t = t / 10 + t % 10;
			}//一旦超过了两位数,那么就算该数的数根,从而降低了时间复杂度
		}
		cout << t << endl;
	}
}

总结

本题为了降低时间复杂度,为了避免数字过大,设置了逐位相加的方法,帮我们实现了循环次数的减少同时帮助我们解决了问题。

尾声

本题帮我们熟悉了字符串代替数的方法,帮助我们有效的减少了时间复杂度,同时避免了数据过大从而溢出的问题,如果觉得笔者写的还不错的话,记得留下你的点赞收藏和关注哦~

F - Digital Roots HUOJ,数据结构,算法文章来源地址https://www.toymoban.com/news/detail-816460.html

到了这里,关于F - Digital Roots HUOJ的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构与算法 --- 数据结构绪论

    早期人们都把计算机理解为数值计算工具,就是感觉计算机当然是用来计算的,所以计算机解决问题,应该是先从具体问题中抽象出一个适当的数据模型,设计出一个解此数据模型的算法,然后再编写程序,得到一个实际的软件。 可现实中,我们更多的不是解决数值计算的问

    2024年02月14日
    浏览(54)
  • 数据结构与算法——数据结构有哪些,常用数据结构详解

    数据结构是学习数据存储方式的一门学科,那么,数据存储方式有哪几种呢?下面将对数据结构的学习内容做一个简要的总结。 数据结构大致包含以下几种存储结构: 线性表,还可细分为顺序表、链表、栈和队列; 树结构,包括普通树,二叉树,线索二叉树等; 图存储结构

    2024年02月15日
    浏览(63)
  • 【数据结构与算法】不就是数据结构

      嗨喽小伙伴们你们好呀,好久不见了,我已经好久没更新博文了!之前因为实习没有时间去写博文,现在已经回归校园了。我看了本学期的课程中有数据结构这门课程(这么课程特别重要),因为之前学过一点,所以就想着深入学习一下子。毕竟这门课程对于 考研 和 就业

    2024年02月07日
    浏览(49)
  • 【数据结构与算法】1.数据结构绪论

    📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点,相互学习进步! 数据结构是计算机中存储、组织数据的方式。 数据结构是一种具有一定逻辑关系,

    2024年01月23日
    浏览(54)
  • 数据结构与算法——什么是数据结构

    当你决定看这篇文章,就意味着系统学习数据结构的开始。下面我们先来讲什么是数据结构。 数据结构,直白地理解,就是研究数据的存储方式。 我们知道,数据存储只有一个目的,即为了方便后期对数据的再利用,就如同我们使用数组存储  {1,2,3,4,5}  是为了后期取得它们

    2024年02月15日
    浏览(55)
  • 数据结构--》掌握数据结构中的排序算法

            当我们面对海量数据时,如何高效地将其排序是数据结构领域中一个重要的问题。排序算法作为其中的关键部分,扮演着至关重要的角色。         无论你是初学者还是进阶者,本文将为你提供简单易懂、实用可行的知识点,帮助你更好地掌握排序算法在数据

    2024年02月08日
    浏览(43)
  • 【数据结构与算法】一、数据结构的基本概念

    抽象数据类型(ADT)定义举例:Circle的定义 如何处理杂乱无章且多样化的数据: 数据元素 :数据中的个体被称为数据元素。 数据对象 :性质相同的数据元素组成的集合。 数据结构 :数据元素加上数据元素之间的关系,就形成了数据结构。 逻辑结构 :数据结构的逻辑模型。

    2023年04月17日
    浏览(99)
  • 数据结构--》掌握数据结构中的查找算法

            当你需要从大量数据中查找某个元素时,查找算法就变得非常重要。         无论你是初学者还是进阶者,本文将为你提供简单易懂、实用可行的知识点,帮助你更好地掌握查找在数据结构和算法中的重要性,进而提升算法解题的能力。接下来让我们开启数据

    2024年02月08日
    浏览(57)
  • 数据结构--》从数据结构开始,打好算法基础

    目录 数据结构的基本概念 数据结构的三要素 算法的基本概念 数据结构的基本概念         在学习某个知识之前,我们是否都有问过自己我们到底在学习的目的是什么?学习数据结构也一样,我们学习数据结构 主要是为了 用程序把现实世界的问题信息化;用计算机高效

    2024年02月09日
    浏览(53)
  • 《数据结构与算法》之栈结构

    在计算机发明之初是为了计算,所以叫计算机,对我们给定的一个算式,然后给定的一套规则 加,减,乘,除,等,它就可以自己进行计算了,然后返回一个结果给我们 对于一般的算式 : 2+3+4 很显然,从左往右依次扫描,依次相加很简单的计算出来,因为它们是同级运算,

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包