leetcode 166分数到小数
手动排除特殊情况;
对于一般情况,使用位运算和加减法来计算除法,使用sign记录结果符号;(这部分为leetcode 29题的答案)
使用hashmap来记录循环体出现的开始位置(如果有的话),使用flag记录有无循环体出现;
class Solution { public:string fractionToDecimal(int numerator, int denominator) {if((numerator==INT_MIN||numerator==INT_MAX)&&(denominator==1||denominator==-1)){if(numerator==INT_MIN){return denominator==1?"-2147483648":"2147483648";}if(numerator==INT_MAX){return denominator==-1?"-2147483647":"2147483647";}}if(denominator==0) return "";string res;int sign=numerator^denominator;if(numerator==0) sign=1;long num=labs(numerator),den=labs(denominator),ans=0,r=0;for(int i=31;i>=0;i--){if((num>>i)>=den){ans+=1<<i;num-=den<<i;}}r=num;if(ans==0) res+="0";while(ans!=0){res+=ans%10+'0';ans=ans/10;}if(sign<0) res+="-";reverse(res.begin(),res.end());if(r!=0)res+=".";int rst=0,flag=0;unordered_map<int,int>m;string right;int i=0;//此处分数不会是无线不循环小数,因此只需要判断是否除尽和是否循环两个break条件就可以了;while(r!=0){r*=10;if(m.count(r)) {flag=1;break;}m[r]=i;if(r>den){rst=r/den;r=r-rst*den;right.push_back('0'+rst);}else{right+="0";}i++;}if(flag==1){res=res+right.substr(0,m[r])+"("+right.substr(m[r])+")";}else{res+=right;}return res;} };
转载于:https://www.cnblogs.com/joelwang/p/10949658.html
leetcode 166分数到小数相关推荐
- int 小数_[LeetCode] 166. 分数到小数
题目描述 : https://leetcode-cn.com/problems/fraction-to-recurring-decimal/ 题目描述: 给定两个整数,分别表示分数的分子 numera ...
- LeetCode 166. 分数到小数(小数除法)
1. 题目 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数. 如果小数部分为循环小数,则将循环的部分括在括号内. 示例 1: 输入: num ...
- Leetcode 166. 分数到小数 解题思路及C++实现
解题思路: 这道题目的核心是怎么找到循环部分:当出现重复的余数时,就会出现循环. 前面需要考虑比较多种情况:除数是否为0:结果的正负:结果的整数部分和小数部分分开求解. 在求解小数部分的时候,需要用到 ...
- LeetCode 166. 分数到小数
思路: 循环体出现的依据是,产生重复的余数,即每次mod*10 后再和 除数b计算出新余数,和之前的比较即可. 先对int型数据进行转换为long 以免int负数最小值化正越界 判定正负数, 结果是否 ...
- 166. 分数到小数
166. 分数到小数 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 . 如果小数部分为循环小数,则将循环的部分括在括号内. 如果存在多个 ...
- 2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num
2021-10-20:分数到小数.给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数.如果小数部分为循环小数,则将循环的部分括在括号内.输入: num ...
- usaco ★Fractions to Decimals 分数化小数
★Fractions to Decimals 分数化小数 写一个程序,输入一个形如 N/D 的分数(N 是分子,D 是分母),输出它的小数形式. 如果小数有循环节的话,把循环节放在一对圆括号中.例如, ...
- 小数点化分数的过程_分数和小数的互化
<分数和小数的互化>由会员分享,可在线阅读,更多相关<分数和小数的互化(3页珍藏版)>请在人人文库网上搜索. 1._五__年级__数学____备课组教案教师备课时间课时课题分数 ...
- 1439: 2.4.5 Fractions to Decimals 分数化小数
1439: 2.4.5 Fractions to Decimals 分数化小数 时间限制: 1 Sec 内存限制: 64 MB 提交: 194 解决: 13 题目描述 写一个程序,输入一个形如N/ ...
最新文章
- 无参数的lambda匿名函数
- 利用jdom生成XML文件
- 关键数据保险箱,AD RMS服务器部署指南
- 纽瓦克市政厅电脑遭勒索软件劫持,部分公共服务被迫瘫痪
- iOS vs. Android,应用设计该如何对症下药?
- 如何使用域组策略(AD GPO)分发软件安装以及卸载[1.31.2013更新]
- mysql 多键sequence_MySQL增多Sequence管理功能
- linux wsgi,linux中wsgi的详解(企业级)
- loj2291. 「THUSC 2016」补退选
- LogBack sl4j 通过MDC实现日志记录区分用户Session[以Spring mvc为例]
- 推荐系统:NDCG评价指标
- 35.5. array route
- 使用sever2008做DHCP中继代理
- 单片机c语言控制直流电机转速,一个用单片机控制直流电机的PWM调速程序
- python怎么导入sql数据库_如何用Python3写一段将Excel数据导入SQL数据库?
- MTK改串工具,mtk刷机工具,高通刷机工具,MTK生成线刷包工具资料下载
- 两相四线混合式步进电机用双H桥驱动电路
- bootice添加linux_使用BOOTICE 恢复系统启动项
- PDF虚拟打印机使用教程(附PDF虚拟打印机下载)
- iOS开发-代码分析工具之Infer
热门文章
- gnome桌面无法显示的解决
- repo下载安卓源码记录
- 微信缓存dat怎么转图片_微信 .dat图片格式转换为.jpg
- 理解 Kafka 消费者属性的 enable.auto.commit
- 角点检测汇总:Harris角点及Shi-Tomasi角点检测
- php中ts和nts版本,PHP中ts和nts版本 - vc6和vc9编译版本的区别
- Idea中Git和SVN如何切换
- Excel在统计分析中的应用—第二章—描述性统计-未分组数据的四分位偏差的求解方法
- 智能枕头方案/案列/APP
- 【Python】DS的基础学习笔记3:组合数据类型