Accept: 188 Submit: 948
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
请将有限小数化为最简分数。
Input
一个整数n 表示需要转化的小数个数;接下来n行,每行有一个有限小数。(保证小数位数不超过9位)
Output
输出有n行,每行为小数对应的最简分数
Sample Input
20.50.4
Sample Output
1/22/5
Hint
注意精度问题,数据保证不会有类似1.0的小数。 Cached at 2015-05-03 22:12:57.
#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
int n;
__int64 l, k, m, n1, t;
scanf("%d",&n);
while(n--)
{
scanf("%s",a);
int i, str = strlen(a), c = 0;
k = 0;
l = 0;
for(i = 0; i < str; i++)
{
if(a[i]!= '.')
l = l*10 + a[i] - '0';
else
k = 1;
if(k == 1)
c++;
}
m = l;
n1 = 1;
for(i = 1; i < c; i++)
n1 = n1*10;
k = n1;
if(m < n1)
{
t = m;
m = n1;
n1 = t;
}
while(n1 != 0)
{
t = m % n1;
m = n1;
n1 = t;
}
printf("%I64d/%I64d\n",l/m,k/m);
}
return 0;
}
1734

被折叠的 条评论
为什么被折叠?



