题目链接:
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): 2921 Accepted Submission(s): 1187
Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?
请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数。
Input 第一行是一个整数N,表示有多少组数据。
每组数据只有一个纯小数,也就是整数部分为0。小数的位数不超过9位,循环部分用()括起来。
Output 对每一个对应的小数化成最简分数后输出,占一行。
Sample Input
3
0.(4)
0.5
0.32(692307)
Sample Output
4/9
1/2
17/52
Source 2007省赛集训队练习赛(2)
Recommend lcy | We have carefully selected several similar problems for you: 1715 1716 1166 1719 1722
这个题目参见百度
http://zhidao.baidu.com/link?url=cJ2IRdzhGzhB3Ct4l0hic1K31tF-tKeb5oI0YlKE5huks_FNDHsNYEfXPfvV1yZTH9XWpU0eOosRlvOlI-MAOa
代码为:
#include
#include
const int maxn=10+10; char str[maxn]; int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int cal1(int x) { int ans=1; for(int i=1;i<=x;i++) ans=ans*10; return ans; } int cal2(int x) { int ans=0; for(int i=1;i<=x;i++) ans=ans*10+9; return ans; } int main() { int t,ok,len,start,end,num; int son,mother,extra; int ans; scanf("%d",&t); while(t--) { ok=1; scanf("%s",str); len=strlen(str); for(int i=0;i