166. Fraction to Recurring Decimal

2023-12-21 15:48
文章标签 decimal 166 recurring fraction

本文主要是介绍166. Fraction to Recurring Decimal,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

166. 分数到小数

给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。

如果小数部分为循环小数,则将循环的部分括在括号内。

示例 1:

输入: numerator = 1, denominator = 2
输出: "0.5"

示例 2:

输入: numerator = 2, denominator = 1
输出: "2"

示例 3:

输入: numerator = 2, denominator = 3
输出: "0.(6)"

解法一:

//时间复杂度O(n), 空间复杂度O(1)
class Solution {
public:string fractionToDecimal(int numerator, int denominator) {if(numerator == 0) return "0";//防止0/denominator = “-0”的情况long a = abs((long)numerator);long b = abs((long)denominator);string res = (numerator ^ denominator) > 0 ? "" : "-";//符号部分;res += to_string(a / b);//整数部分a %= b;//余数if(!a) return res;res += '.';a *= 10;unordered_map<int, size_t> um;//被除数,索引while(a) {//开始处理小数部分res += to_string(a / b);//商um[a] = res.size() - 1;a %= b;//取余数a *= 10;//余数乘10作为下一步的被除数if(um.count(a)) return res.insert(um[a], "(") + ')';}return res;}
};

解法一:

两个整数相除结果一定是个有限小数或者循环小数,所以使用一个哈希表记录计算过程中出现过的被除数,如果遇到重复出现的被除数,说明这里是循环的末尾。

  1. 处理符号,将两个数都转成正数处理。
  2. 先计算整数部分,只需要一次除法。
  3. 再处理小数部分,每次计算出一位商,之后将余数乘10作为被除数继续进行循环。
  4. 终止条件是余数为0,或者遇到重复出现的被除数(此时应添加括号)。
2020/01/02 18:08

这篇关于166. Fraction to Recurring Decimal的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/520567

相关文章

奇异递归模板模式(Curiously Recurring Template Pattern)

奇异递归模板模式(Curiously Recurring Template Pattern) - 知乎 (zhihu.com) 本文来自上面的文章!!!本菜鸡学习和记录一下。 CRTP是C++模板编程时的一种惯用法:把派生类作为基类的模板参数。 1.静态多态 #include <iostream>using namespace std;template <typename Child>

mysql中的Decimal括号怎么写,decimal(m,d)

第一次看到decimal(m,d)一头雾水,知道肯定是个范围,但是不知道范围的规则,看了一些文章发现说的都不是很明白,于是去官网看了下。 大概意思是这样的: decimal(m,d) m是数字的最大位数,他的范围是从1-65; d是小数点后的位数,他的范围是0-30,并且不能大于m。 如果m被省略了,那么m的值默认为10, 如果d被省略了,那么d的值默认为0. 举例表示: 1、decim

JAVA毕业设计166—基于Java+Springboot+vue3的流浪宠物救助管理小程序(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于Java+Springboot+vue3的流浪宠物救助管理小程序(源代码+数据库)166 一、系统介绍 本项目前后端分离带小程序(可以改为ssm版本),分为用户、救助站、管理员三种角色 1、用户: 注册、登录、宠物救助、论坛交流、救助站入驻、个人

Flink CDC读取Mysql时,Decimal类型数据异常,变成了字符串(源码解析及解决方案)

1. 问题说明 使用Flink CDC 读取mysql数据时,当表字段为decimal时,读取的数据变成了字符串。 如下示例: 环境: Flink 1.18.0 Flink CDC 3.1.1 mysql 8 mysql的数据如下: 使用Flink CDC读取后的数据如下: 为了方便看,复制出来就是: {“id”:1,“price”:“AZA=”,“amount”:“wjk”} {“i

C#中,decimal类型使用

在Microsoft SQL Server中numeric类型,在C#中使用的时候,需要用decimal类型与其对应,不能使用int等类型。 SQL:numeric C#:decimal

【 ClickHouse】 ClickHouse数据类型(整型、浮点型、布尔型、Decimal型、字符串、数组、时间类型)(二)

ClickHouse数据类型 整型 固定长度的整型,包括有符号整型或无符号整型。 1)整型范围: Int8 - [-128 : 127]Int16 - [-32768 : 32767]Int32 - [-2147483648 : 2147483647]Int64 - [-9223372036854775808 : 9223372036854775807] 2)无符号整型范围: UI

Golang | Leetcode Golang题解之第166题分数到小数

题目: 题解: func fractionToDecimal(numerator, denominator int) string {if numerator%denominator == 0 {return strconv.Itoa(numerator / denominator)}s := []byte{}if numerator < 0 != (denominator < 0) {s

Educational Codeforces Round 166 (Rated for Div. 2) (A~C)

A. Verify Password 思路:按照ASCLL值进行比较就行(因为字母的ASCLL本来就在数字后面),所以,只要找到前面比后面的数大就输出NO,反之YES 代码实现: #include<bits/stdc++.h>using namespace std;#define N 100005typedef long long ll;ll n, m, num, sum

decimal,float,double,bigint

浮点类型在存储同样范围的值时,通常比decimal使用更少的空间. float使用4个字节存储 . double占用8个字节,相比float有更高的精度和更大的范围.和整数类型一样,能选择的只是存储类型, MySQL使用double作为内部浮点计算的类型 因为需要额外的空间和计算开销,所以应该尽量只在对小数进行精确计算时才使用---例如存储财务数据. 但在数据量比较大的时候,可以考虑

认识 DECIMAL 类型

文章目录 1.作用2.实现原理参考文献 1.作用 为保证小数精度不丢失,数据库表使用 DECIMAL 类型,服务代码中使用,比如 Golang 第三方库 https://github.com/shopspring/decimal。接口协议可以使用 string 表示。 从 DB 存储,服务数据计算与前端接口返回,全链路保证小数精度不会丢失。 DECIMAL 类型另外一个作用就