手动排除特殊情况;

对于一般情况,使用位运算和加减法来计算除法,使用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分数到小数相关推荐

  1. int 小数_[LeetCode] 166. 分数到小数

    题目描述 : https://leetcode-cn.com/problems/fraction-to-recurring-decimal/ 题目描述: 给定两个整数,分别表示分数的分子 numera ...

  2. LeetCode 166. 分数到小数(小数除法)

    1. 题目 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数. 如果小数部分为循环小数,则将循环的部分括在括号内. 示例 1: 输入: num ...

  3. Leetcode 166. 分数到小数 解题思路及C++实现

    解题思路: 这道题目的核心是怎么找到循环部分:当出现重复的余数时,就会出现循环. 前面需要考虑比较多种情况:除数是否为0:结果的正负:结果的整数部分和小数部分分开求解. 在求解小数部分的时候,需要用到 ...

  4. LeetCode 166. 分数到小数

    思路: 循环体出现的依据是,产生重复的余数,即每次mod*10 后再和 除数b计算出新余数,和之前的比较即可. 先对int型数据进行转换为long 以免int负数最小值化正越界 判定正负数, 结果是否 ...

  5. 166. 分数到小数

    166. 分数到小数 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 . 如果小数部分为循环小数,则将循环的部分括在括号内. 如果存在多个 ...

  6. 2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num

    2021-10-20:分数到小数.给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数.如果小数部分为循环小数,则将循环的部分括在括号内.输入: num ...

  7. usaco ★Fractions to Decimals 分数化小数

    ★Fractions to Decimals 分数化小数 写一个程序,输入一个形如 N/D 的分数(N 是分子,D 是分母),输出它的小数形式. 如果小数有循环节的话,把循环节放在一对圆括号中.例如, ...

  8. 小数点化分数的过程_分数和小数的互化

    <分数和小数的互化>由会员分享,可在线阅读,更多相关<分数和小数的互化(3页珍藏版)>请在人人文库网上搜索. 1._五__年级__数学____备课组教案教师备课时间课时课题分数 ...

  9. 1439: 2.4.5 Fractions to Decimals 分数化小数

    1439: 2.4.5 Fractions to Decimals 分数化小数 时间限制: 1 Sec  内存限制: 64 MB 提交: 194  解决: 13 题目描述 写一个程序,输入一个形如N/ ...

最新文章

  1. 无参数的lambda匿名函数
  2. 利用jdom生成XML文件
  3. 关键数据保险箱,AD RMS服务器部署指南
  4. 纽瓦克市政厅电脑遭勒索软件劫持,部分公共服务被迫瘫痪
  5. iOS vs. Android,应用设计该如何对症下药?
  6. 如何使用域组策略(AD GPO)分发软件安装以及卸载[1.31.2013更新]
  7. mysql 多键sequence_MySQL增多Sequence管理功能
  8. linux wsgi,linux中wsgi的详解(企业级)
  9. loj2291. 「THUSC 2016」补退选
  10. LogBack sl4j 通过MDC实现日志记录区分用户Session[以Spring mvc为例]
  11. 推荐系统:NDCG评价指标
  12. 35.5. array route
  13. 使用sever2008做DHCP中继代理
  14. 单片机c语言控制直流电机转速,一个用单片机控制直流电机的PWM调速程序
  15. python怎么导入sql数据库_如何用Python3写一段将Excel数据导入SQL数据库?
  16. MTK改串工具,mtk刷机工具,高通刷机工具,MTK生成线刷包工具资料下载
  17. 两相四线混合式步进电机用双H桥驱动电路
  18. bootice添加linux_使用BOOTICE 恢复系统启动项
  19. PDF虚拟打印机使用教程(附PDF虚拟打印机下载)
  20. iOS开发-代码分析工具之Infer

热门文章

  1. gnome桌面无法显示的解决
  2. repo下载安卓源码记录
  3. 微信缓存dat怎么转图片_微信 .dat图片格式转换为.jpg
  4. 理解 Kafka 消费者属性的 enable.auto.commit
  5. 角点检测汇总:Harris角点及Shi-Tomasi角点检测
  6. php中ts和nts版本,PHP中ts和nts版本 - vc6和vc9编译版本的区别
  7. Idea中Git和SVN如何切换
  8. Excel在统计分析中的应用—第二章—描述性统计-未分组数据的四分位偏差的求解方法
  9. 智能枕头方案/案列/APP
  10. 【Python】DS的基础学习笔记3:组合数据类型