2021-05-27:定义何为step sum?比如680,680+68+6=754,680的step sum叫754。
2021-05-27:定义何为step sum?比如680,680+68+6=754,680的step sum叫754。给定一个整数num,判断它是不是某个数的step sum?
福大大 答案2021-05-27:
方法一:
自然智慧即可。二分法。在0到num之间找中点,然后求中点的step sum。如果step sum太大,取左边;如果step sum太小,取右边。时间复杂度是(log2N)*(log10N)。
方法二:
1.求出不大于num的最大的全1数,然后num/全1数。如果商大于等于10,直接返回false。
2.看余数。
2.1.当余数不为0时,num=余数,全1数=(全1数/10),重复步骤1。
2.2.当余数为0时,返回true。
时间复杂度是log10N。
代码用golang编写。代码如下:
package main
import "fmt"
//05
func main() {
count := 0
for i := 1; i <= 11111; i++ {
ret1 := isStepSum1(i)
ret2 := isStepSum2(i)
fmt.Println(i, ret1, ret2)
count++
}
fmt.Println("正确数 = ", count)
}
//方法1
func isStepSum1(stepSum int) bool {
L := 0
R := stepSum
M := 0
cur := 0
for L <= R {
M = L + (R-L)>>1
cur = getStepSum(M)
if cur == stepSum {
return true
} else if cur < stepSum {
L = M + 1
} else {
R = M - 1
}
}
return false
}
func getStepSum(num int) int {
sum := 0
for num != 0 {
sum += num
num /= 10
}
return sum
}
//方法2
func isStepSum2(stepSum int) bool {
global111 := getGlobal111(stepSum)
for global111 > 0 {
quotient := stepSum / global111 //商
remainder := stepSum % global111 //余数
if quotient >= 10 {
return false
}
global111 /= 10
stepSum = remainder
}
return true
}
func getGlobal111(num int) int {
ans := 1
anstemp := 11
for anstemp <= num {
ans = anstemp
anstemp *= 10
anstemp++
}
return ans
}
执行结果如下:

2021-05-27:定义何为step sum?比如680,680+68+6=754,680的step sum叫754。的更多相关文章
- 2021.05.14 tarjan
2021.05.14 tarjan 标准版tarjan 这里使用数组来模拟栈 void tarjan(int x){ ++ind; dfn[x]=low[x]=ind; stacki[++top]=x ...
- 项目Beta冲刺(团队)——05.27(5/7)
项目Beta冲刺(团队)--05.27(5/7) 格式描述 课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺(团队) 团队名称:为了交项目干杯 作业目标:记录Beta敏捷冲刺第5 ...
- 2021.05.03 T3 数字
2021.05.03 T3 数字 问题描述 一个数字被称为好数字当他满足下列条件: 1. 它有**2*n**个数位,n是正整数(允许有前导0) 2. 构成它的每个数字都在给定的数字集合S中. 3. 它 ...
- 2021.05.09【NOIP提高组】模拟赛总结
2021.05.09[NOIP提高组]模拟赛总结 T1 T2
- Noip模拟63 2021.9.27(考场惊现无限之环)
T1 电压机制 把题目转化为找那些边只被奇数环包含. 这样的话直接$dfs$生成一棵树,给每个点附上一个深度,根据其他的非树边都是返祖边 可以算出环内边的数量$dep[x]-dep[y]+1$,然后判 ...
- Noip模拟10 2021.6.27
T1 入阵曲 好了,又一个考试败笔题. 也就是在那个时候,小 F 学会了矩阵乘法.让两个矩阵乘几次就能算出斐波那契数, 真是奇妙无比呢. 不过, 小 F 现在可不想手算矩阵乘法--他觉得好麻烦.取而代 ...
- 2021.10.27考试总结[冲刺NOIP模拟17]
T1 宝藏 发现每个数成为中位数的长度是关于权值单调的.线段树二分判断是否合法,单调指针扫即可. 考场上写了二分,平添\(\log\). \(code:\) T1 #include<bits/s ...
- 日常Java 2021/9/27
题目: 在某个比赛中,有6个评委为参赛的选手打分,分数为1-100的随机整数.选手的最后得分为:除去最高分和最低分后的4个评委分值的平均值(不考虑小数部分). package m; import ja ...
- 2021.05.29【NOIP提高B组】模拟 总结
T1 题意:给你一个图,可以不花代价经过 \(K\) 条边,问从起点到终点的最短路 考试的想法:设 \(dis_{i,j}\) 表示从起点免费了 \(j\) 条边到 \(i\) 的最短路 然后直接跑 ...
- 关于多条数据转为json格式单次传输的问题 2017.05.27
数据形式如下: var mycars = [];//定义数组存放多条数据 for(var i=0;i<2;i++){ var jsonData = {};//定义变量存放单条数据 jsonDat ...
随机推荐
- 在wxpython框架写的GUI中调用GIF格式图片,显示在指定行列的方法
#首先需要从 wx.adv 模块导入 Animation, AnimationCtrl方法 from wx.adv import Animation, AnimationCtrl #然后在面板实现过程 ...
- 【读书笔记】组合计数中的行列式方法 专题2 欧拉回路,the BEST theorem
目录 专题2-欧拉回路,the BEST theorem 一些定义 一个有向图是欧拉的充要条件 BEST定理 BSET定理推论 k-ary de Bruijn sequence定义 BSET theo ...
- linux中查看用户和组信息小结
查看当前登录用户的组内成员groups 查看当前登录用户名whoami 查看tom用户所在的组,以及组内成员groups tom 查看所有的用户信息cat /etc/passwd 用户名.密码.用户i ...
- conda环境下使用nvcc -V报错nvcc: command not found的一种解决方法
前言 缘起 实验室的学弟问我为什么他使用nvcc命令报错,起先我以为他用的是老师给的root账户,按照参考文献1便可以解决问题. 但由于并非root用户,/usr/local下没有cuda,于是便 ...
- Condition 接口
系统性学习,移步IT-BLOG Java 对象拥有一组监视方法:wait().wait(long timeout).notify() 以及 notifyAll() 方法,这些方法与 synchroni ...
- 高性能 Kafka队列的原理
一.原理简述 [1]Producer将消息进行分组分别发送到对应 Leader节点:[2]Leader将消息写入本地 log:[3]Followers从 Leader pull最新消息,写入 log后 ...
- 长达 1.7 万字的 explain 关键字指南!
当你的数据里只有几千几万,那么 SQL 优化并不会发挥太大价值,但当你的数据里去到了几百上千万,SQL 优化的价值就体现出来了!因此稍微有些经验的同学都知道,怎么让 MySQL 查询语句又快又好是一件 ...
- 四月十六号java基础知识
1.如果没有一个机制来限制对类中成员的访问,则很可能会造成错误的输入如果在类的成员声明前面加上修饰符private,则无法从类的外部访问到该类内部的成员,而只能被该类自身访问和修改,而不能被任何其他类 ...
- day08 元组字典集合
day08 元组 集合 字典 元组 """ 小括号括起来,内部存放多个元素,元组之间逗号隔开,元素不可改变,元素类型不能是任意的, """ ...
- 【SSM项目】尚筹网(五)项目改写:使用前后端分离的SpringSecurityJWT认证
在项目中加入SpringSecurity 1 加入依赖 <!-- SpringSecurity --> <dependency> <groupId>org.spri ...