HDOJ 1717 小数化分数2
来源:互联网 发布:js 给方法注释 编辑:程序博客网 时间:2024/04/29 03:05
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1717
题目:
小数化分数2
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2920 Accepted Submission(s): 1186
Problem Description
Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?
请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数。
请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数。
Input
第一行是一个整数N,表示有多少组数据。
每组数据只有一个纯小数,也就是整数部分为0。小数的位数不超过9位,循环部分用()括起来。
每组数据只有一个纯小数,也就是整数部分为0。小数的位数不超过9位,循环部分用()括起来。
Output
对每一个对应的小数化成最简分数后输出,占一行。
Sample Input
30.(4)0.50.32(692307)
Sample Output
4/91/217/52
Source
题意:将一个小数化成分数形式。
解题思路:
小数(除了无限不循环小数外)都可以化成分数。1.将有限小数化成分数,方法如下:0.25 * 100 = 25;0.25 = 25 / 100(约分即可得到0.25的小数表示);2.将循环小数化成分数,方法如下:0.32(692307) * 100 = 32.692307①;0.32(692307) * 10 ^ 8 = 32692307.(692307)②; ② - ①得:0.32(692307)* (10 ^ 8 - 100) = 32692275; 0.32(692307) = 32692275 / (10 ^ 8 - 100)(约分即可得到0.32(692307)的小数形式)。
代码:
#include <cstdio>#include <cstring>int gcd(int m, int n){ int r; while(n) { r = m % n; m = n; n = r; } return m;}int main(){ int t; scanf("%d", &t); getchar(); while(t--) { char s[20]; scanf("%s", s); int len = strlen(s), index = 0; for(int i = 0; i < len; i++) { if('(' == s[i]) index = i; } if(index) { int a = index - 2, c = 0, f, m = 1, n = 1; int b = len - index - 2 + a; for(int i = 2; i < len - 1; i++) { if(i == index) { f = c; continue; } c = 10 * c + s[i] - '0'; } c = c - f; while(a--) m *= 10; while(b--) n *= 10; int d = n - m, e = gcd(d, c); printf("%d/%d\n", c/e, d/e); } else { int a = 0, b = 1, m = len - 2; for(int i = 2; i < len; i++) a = 10 * a + s[i] - '0'; while(m--) b *= 10; int c = gcd(a, b); printf("%d/%d\n", a/c, b/c); } } return 0;}
0 0
- hdoj 1717 小数化分数2【水】
- HDOJ 1717 小数化分数2
- HDOJ 题目1717 小数化分数2(数学)
- HDOJ 1717 小数化分数2 (数学,循环小数化分数详细讲解)
- 1717 小数化分数2
- (数学,小数化分数的规律)小数化分数2-HDOJ
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- hdu 1717 小数化分数2
- 小数化分数2 杭电1717
- hdu 1717 --小数化分数2
- cocos2dx添加文本的三种方法及适用情况CCLabelTTF,CCLabelBMFont,CCLabelAtlas
- C——通过调用函数分配内存
- 【LeetCode】ZigZag Conversion
- 标准C程序设计-格式化输入
- OCP-1Z0-051-题目解析-第35题
- HDOJ 1717 小数化分数2
- POJ 3074 SUKODU [Dancing Links DLX精准覆盖问题]
- Base64Coder方式实现android向jsp服务器后台上传图片
- ssh日志工具配置
- 为什么程序员下班不关电脑呢?
- hdu 3849 By Recognizing These Guys, We Find Social Networks Useful
- Windows 8系统平台上应用软件安装心得
- OCP-1Z0-051-题目解析-第36题
- Linux下weblogic安装图解