2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num
2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: numerator = 1, denominator = 2,输出: “0.5”。输入: numerator = 2, denominator = 3,输出: “0.(6)”。力扣166。
福大大 答案2021-10-20:
1.分子/分母,求得整数部分。
2.分子=分子%10。
3.然后分子=分子*10,然后重复第1步。
时间复杂度:O(lgN)。
空间复杂度:O(lgN)。
代码用golang编写。代码如下:、
package main
import "fmt"
func main() {
a := 3
b := 11
ret := fractionToDecimal(a, b)
fmt.Println(ret)
fmt.Println(3.0 / 11.0)
}
func fractionToDecimal(numerator, denominator int) string {
if numerator == 0 {
return "0"
}
//StringBuilder res = new StringBuilder();
res := make([]byte, 0)
// "+" or "-"
//res.append(((numerator > 0) ^ (denominator > 0)) ? "-" : "");
if (numerator > 0 && !(denominator > 0)) || (!(numerator > 0) && denominator > 0) {
res = append(res, []byte("-")...)
} else {
res = append(res, []byte("")...)
}
num := Abs(numerator)
den := Abs(denominator)
// integral part
//res.append(num / den);
res = append(res, []byte(fmt.Sprint(num/den))...)
num %= den
if num == 0 {
return string(res)
}
// fractional part
res = append(res, []byte(".")...)
map0 := make(map[int]int)
map0[num] = len(res)
for num != 0 {
num *= 10
res = append(res, []byte(fmt.Sprint(num/den))...)
num %= den
if _, ok := map0[(num)]; ok {
index := map0[num]
//res.insert(index, "(")
rescopy := make([]byte, 0)
rescopy = append(rescopy, res[0:index]...)
rescopy = append(rescopy, []byte("(")...)
rescopy = append(rescopy, res[index:]...)
res = rescopy
res = append(res, []byte(")")...)
break
} else {
map0[num] = len(res)
}
}
return string(res)
}
func Abs(a int) int {
if a < 0 {
return -a
} else {
return a
}
}
执行结果如下:

2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num的更多相关文章
- Noip模拟81 2021.10.20
T1 语言 比较简单的题,然后就瞎写了,所以考场上就我一个写了线段树的,所以我的常数.... 所以就枚举动词的位置,找前面后面有没有出现$4$即可 1 #include<bits/stdc++. ...
- 日常Java 2021/10/20
Java提供了一套实现Collection接口的标准集合类 bstractCollection 实现了大部分的集合接口. AbstractList 继承于AbstractCollection并且实现了 ...
- ACM(数学问题)——UVa202:输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。
主要思路: 通过模拟除法运算过程,来判断循环节结束的位置,不断将余数*10再对除数取余得到新的余数,并记录下来,知道出现的余数之前出现过,此时小数开始循环. 例如: 假设 -> a ...
- 设计算法,求AB两个整数集合的交集
[本文链接] http://www.cnblogs.com/hellogiser/p/ab-set-intersection.html [分析] 思路1:排序法 对集合A和集合B进行排序(升序,用快排 ...
- input内强制保留小数点后两位 位数不足时自动补0
input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入 需引入jquery包 1.11.2版本 1 function xiaoshu(x) 2 { 3 var f = ...
- 给定两个字符串,均只包含英文字母,需区分大小写,一个是源字符串SS(长度<1000), 另一个是目标字符串TS(长度<1000),请问能否通过删除SS中的字符(不改变顺序)将它变换成TS,如果可以输出“YES",不可以则输出“NO"。 输入说明:第一行为源字符串SS,第二行为目标字符串TS。
import java.util.Scanner;/* 给定两个字符串,均只包含英文字母,需区分大小写,一个是源字符串SS(长度<1000), 另一个是目标字符串TS(长度<1 ...
- Noip模拟70 2021.10.6
T1 暴雨 放在第一道的神仙题,不同的做法,吊人有的都在用线段树维护$set$预处理 我是直接$dp$的,可能代码的复杂度比那种的稍微小一点 设$f[i][j][p][0/1]$表示考虑了前$i$列, ...
- js(javascript)取float型小数点后两位数的方法
以下我们将为大家介绍 JavaScript 保留两位小数的实现方法:四舍五入以下处理结果会四舍五入: ? 1 2 var num =2.446242342; num = num.toFixed(2); ...
- IMO 2021 第 1 题拓展问题的两个极值的编程求解
IMO 2021 第 1 题拓展问题的两个极值的编程求解 本篇是 IMO 2021 第一题题解及相关拓展问题分析 的续篇. 拓展问题三: (I). 求 n 的最小值,使得 n, n + 1, ..., ...
- Noip模拟69 2021.10.5
考场拼命$yy$高精度结果没学好$for$循环痛失$50pts$,当场枯死 以后一定打对拍,要不考后会... T1 石子游戏 首先要知道典型的$NIM$博弈,就是说如果所有堆石子个数的异或和为$0$则 ...
随机推荐
- 谈恋爱要做什么事?基于auto.js自动发早安给女朋友
谈恋爱要做什么事?除了用心之外,每天早安晚安必然是少不了的.但是每天都发免不了会忘, 为了避免遗忘,引起不必要的尴尬,我们可以做个自动化脚本来做这件事. 1 auto.js 是什么? Auto.JS是 ...
- Centos6、7修改主机名
centos6 1.临时修改 hostname node1 2.永久生效 , 修改/etc/sysconfig/network 文件 HOSTNAME=node1 3.修改 /etc/hosts文件 ...
- imx6ull调试记录——开发环境搭建
搭建开发环境之网络环境 代码编译环境准备 换源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo vim /etc/apt/so ...
- 给jui(dwz)的navTab换一套漂亮的图标
上次讲了给jui(dwz)的菜单树换一套漂亮的图标,这次讲一下在点击菜单后,怎么把设置的漂亮图标带到navTab上去. 官方的navTab是这样显示的,除了默认的我的主页外,tab页上只有标题没有图标 ...
- Spring--AOP通知类型
AOP通知类型 前置通知 通知类中的数据在原始数据的前面 后置通知 通知类中的数据在原始数据的后面 环绕通知 若是只是加一个注解: 我们需要这样做:加一个参数: 若是面对有返回值的方法,又有一点不同之 ...
- 跳出思维的“盒子”,聊聊 RTE 应用创新大赛的那些作品
由声网Agora 与环信联合主办的"RTE 2021 编程挑战赛"已圆满落幕.在今年的大赛中,来自行业中不同领域的专家参与了决赛评选,包括 Linux 中国技术社区技术负责人 白宦 ...
- 如何快速弄懂Java线程池
Java线程池是一种高效的多线程编程技术,它可以帮助程序员有效地控制多线程的并发执行.它可以提高应用程序的性能.降低内存消耗和减少延迟. 线程池的原理是,程序员可以将每个任务放入线程池中,然后由线程池 ...
- dart基础---->单例singleton
At least, there are three ways to create the singleton object with dart. 1. factory constructor clas ...
- dart基础---->dart语法入门
Dart is an open source, structured programming language for creating complex, browser-based web appl ...
- vue使用keep-alive出现的的activated和deactivated生命周期
<keep-alive>包裹的动态组件会被缓存,它是一个抽象组件,它自身不会渲染一个dom元素,也不会出现在父组件链中.当组件在 <keep-alive> 内被切换,它的 ac ...