先来看一道杭电的数字根问题



此题的大大意是输入一个数。假设它不是一位的数字的话,那么我们就将它的每一位都相加,相加后假设还是两位或者很多其它的话那么我们继续取出它的每一位数字进行相加。知道等到单个数字为止。

初次看到这道题。并没有看n的取值范围,便直接写了个int类型的。不一会就写出来了,測试,通过。然而呢。当我提交的时候才知道。正由于没有给出n的取值范围,所以你须要考虑大数的问题!

当然数论的题,经常包括着我们也许不知道的定理啊,什么的。毕竟像ACM之类的题,我们通常不能直接依照题目的叙述直接做,比方求各数字,相加等等·····当然有些题还是能够在保证时间和空间都不超的情况下,这样试试!此题也不例外,

先是两种依照题意做的

这篇代码是我依照题意建立字符数组写的,但最坑的是题意的n仅仅写了一个more,就是这个more让我程序卡了一天。我最初定义的字符数组长度为1000,刚优点在这个边界值上,1001都能够过,注意,注意。注意!



这样的算法採用了递归的思想和第一种方法大同小异吧!

接下来便是才用9余数的方法去求数字根,先贴代码

下一道题将会介绍9余数:



以下这道题,则既用了数字根,也用了高速幂



对于这道题,先介绍两个重要的东西

1.九余数定理:假设把一个大数的各位数字相加得到一个和。再把这个和的各位数字相加又得一个和。再继续作数字和。直到最后的数字和是个位数为止,

这最后的数称为最初那个数的“数字根”。这个数字根等于原数除以9的余数,因此这个计算过程经常称为“合九法”

此外: 概念:一个数对9求余的结果。成为九余数

有定理,某个数各个位上的数相加对九求余等于这个数的九余数。

样例:1234%9=1

(1+2+3+4)%9=1

二者相等。

2.高速幂:(同余定理)假设两个乘积除以m的余数等于这两个数分别除以m的余数积。

比如:7%3=1 5%3=2 7*5/3=2=1*2

求高速幂的代码例如以下:



灰常实用的!

最后附上此题代码:



——- 2016.3.29晚于电子楼311

ACM之数论数字根的更多相关文章

  1. 数字根(digital root)

    来源:LeetCode 258  Add Dights Question:Given a non-negative integer  num , repeatedly add all its digi ...

  2. 1. 数字根(Digital Root)

    数字根(Digital Root)就是把一个自然数的各位数字相加,再将所得数的各位数字相加,直到所得数为一位数字为止.而这个一位数便是原来数字的数字根.例如: 198的数字根为9(1+9+8=18,1 ...

  3. 洛谷 P3962 [TJOI2013]数字根 解题报告

    P3962 [TJOI2013]数字根 题意 数字根:这个数字每一位的数字加起来求和,反复这个过程直到和小于10. 给出序列\(a\),询问区间\([l,r]\)连续的子区间里最大前5个不同的数字根, ...

  4. TJOI2013数字根

    题面链接 洛谷 sol 我们先不考虑\(0\),发现数字根\(=\)它\(mod 9\). 我们前缀和一波,把区间和变成两数相减. 对于每个\(v\in\{0-8\}\),(这里面的\(mod 9=0 ...

  5. Luogu P3962 [TJOI2013]数字根 st

    题面 我先对数字根打了个表,然后得到了一个结论:\(a\)的数字根=\((a-1)mod 9+1\) 我在询问大佬后,大佬给出了一个简单的证明: \(\because 10^n\equiv 1(mod ...

  6. 洛谷3962 [TJOI2013]数字根

    题目描述 一个数字的数字根定义为:这个数字每一位的数字加起来求和,反复这个过程直到和小于10.例如,64357的数字跟为7,因为6+4+3+5+7=25,2+5=7个区间的数字根定义为这个区间所有数字 ...

  7. ACM 蛇形填数

    蛇形填数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方陈为:10 11 12 19 16 1 ...

  8. 【ACM】NYOJ_69_数的长度_20130725

    数的长度时间限制:3000 ms  |  内存限制:65535 KB 难度:1描述     N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出 ...

  9. LeetCode 258 Add Digits(数字相加,数字根)

    翻译 给定一个非负整型数字,反复相加其全部的数字直到最后的结果仅仅有一位数. 比如: 给定sum = 38,这个过程就像是:3 + 8 = 11.1 + 1 = 2.由于2仅仅有一位数.所以返回它. ...

随机推荐

  1. java web开发中常用的协议的使用和java-web 常见的缓冲技术

    一.DNS协议 作用将域名解析为IP   类似于我们只需要知道中央一台,中央二台,而不需要知道它的频率,方便记忆. java dns 域名解析协议实现 1 域名解析,将域名可转换为ip地址InetAd ...

  2. 云服务器linux使用之开发环境搭建(一)

    Host key verification failed. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: ...

  3. PHP15 Smarty模板

    学习目标 Smarty基本概念 Smarty安装和配置 Smarty模板设计 Smarty流程控制 Smarty基本概念 一种模板引擎,在系统中进行预处理和过滤数据.是主流的PHP模板引擎,此外PHP ...

  4. postman使用--环境变量

    变量 postman提供了变量设置,有四种变量类型本地变量全局变量环境变量 数据变量 什么是环境变量 环境变量指在不同环境,同一个变量值随着环境不同而变化,比如在测试环境时,host为:dev.pos ...

  5. RN传参的问题

    RN父组件通过props属性给子组件传参,假设参数 target={target} 子组件在render函数里 let { target } = this.props; 如果子组件有个 FlatLis ...

  6. CAS机制(多线程)

    ---- 什么是CAS机制 CAS机制主要是发生于Java中原子操作类(JUC)的底层实现中,其中在CAS机制中包含3个基本参数:内存地址V.旧预期值A.要修改的新值B. 当要更新一个变量的时候,只有 ...

  7. css 图片等宽等高

    html <div class="autoimg"> <img src="xxx.jpg" /> </div> css .a ...

  8. crontab 和 supervisor

    crontab linux系统自带的工具,可以做定时任务,最小间隔是1分钟 配置crontab 命令 如果是以root用户编辑的,那么最后运行也是以root用户运行脚本文件 crontab -e 命令 ...

  9. LeetCode(169)Majority Element

    题目 Given an array of size n, find the majority element. The majority element is the element that app ...

  10. CentOS 7下安装Composer + Laravel

    1.wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer chmod a+x /usr/local/bi ...