FZU 2193 So Hard (把小数换为分数)

来源:互联网 发布:织梦cms安装教程 编辑:程序博客网 时间:2024/04/27 15:52

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2193


 Problem Description

请将有限小数化为最简分数。

Input

一个整数n 表示需要转化的小数个数;接下来n行,每行有一个有限小数。(保证小数位数不超过9位)

Output

输出有n行,每行为小数对应的最简分数

Sample Input

20.50.4

Sample Output

1/22/5

Hint

注意精度问题,数据保证不会有类似1.0的小数。

Source

福州大学第十二届程序设计竞赛 


代码如下:

#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <cmath>.using namespace std;char str[47];int GCD(int a, int b){    if(b==0)        return a;    return GCD(b,a%b);}int getint(char* str,int sta,int pos){    int num = 0;    for(int i = sta; i < pos; i++)        num = num*10+str[i]-48;    return num;}int main(){    int t;    scanf("%d",&t);    while(t--)    {        double sum = 0;        cin>>str;        int len  = strlen(str);        int k = 0;        for(int i = 0; i < len; i++)        {            if(str[i] != '.')            {                k++;            }            else            {                break;            }        }        int mol = getint(str,k+1,len);        int den = pow(10.0,len-k-1);        mol += getint(str,0,k)*den;        int gcd = GCD(mol,den);        mol /= gcd;        den /= gcd;        cout<<mol<<'/'<<den<<endl;    }    return 0;}/*9911.10.10.21.111.1111.21.30.123450.123*/


1 0
原创粉丝点击