• hdu 1717



    题解:

    想办法“剪掉”无限循环小数的“大尾巴”。策略就是用扩倍的方法,

    把无限循环小数扩大十倍、一百倍或一千倍……使扩大后的无限循环小数与原无限循环小数的“大尾巴”完全相同,

    然后这两个数相减,“大尾巴”不就剪掉了吗!我们来看两个例子:

    ⑴    把0.4747……和0.33……化成分数。

    0.4747……×100=47.4747……   

    0.4747……×100-0.4747……=47.4747……-0.4747……

    (100-1)×0.4747……=47

    即99×0.4747…… =47 

    那么  0.4747……=47/99

    ⑵把0.4777……和0.325656……化成分数。

    0.4777……×10=4.777……①

    0.4777……×100=47.77……②

    用②-①即得: 

    0.4777……×90=47-4

    所以, 0.4777……=43/90

    #include<stdio.h>
    #include<string>
    #include<iostream>
    using namespace std;
    string s;
    int gcd(int b,int c)
    {
        int d=b%c;
        if(d==0)return c;
        else return gcd(c,d);
    }
    int main()
    {
        int _case;
        int i;
        int sum,sumd,gc;
        scanf("%d",&_case);
        getchar();
        while(_case--)
        {
            s.clear();
            cin>>s;
            //cout<<s<<endl;
            sum=0;
            sumd=1;
            for(i=2;i<s.size();i++)//chun xiaoshu
            {
                if(s[i]!='(')
                {
                    sum=sum*10+s[i]-'0';
                    sumd*=10;
                }
                else break;
            }
            if(i==s.size())
            {
                if(sum==0)
                {
                    printf("0\n");
                    continue;
                }
                //printf("%d %d\n",sumd,sum);
                gc=gcd(sumd,sum);
                printf("%d/%d\n",sum/gc,sumd/gc);
            }
            else
            {
    
                int sumx=sum;
                int sumy=sumd;
                for(i=i+1;i<s.size();i++)
                {
    
                    if(s[i]!=')')
                    {
                        sum=sum*10+s[i]-'0';
                        //sumd*=10;
                        sumd*=10;
                        //sumy*=10;
                    }
                }
                sum-=sumx;
                sumd-=sumy;
                //printf("#%d %d\n",sumd,sum);
                gc=gcd(sumd,sum);
                printf("%d/%d\n",sum/gc,sumd/gc);
            }
        }
        return 0;
    }




  • 相关阅读:
    Day12:前端代码的合并和登录过程的完善
    Day11:基本界面的完成
    Day10:界面的跳转
    Day9:尝试连接绑定数据与API
    Day8:转战前端开发
    Day7:熟悉搭建服务器工具及配置
    Day6:完成API的列举设计
    day14
    day13
    day13
  • 原文地址:https://www.cnblogs.com/XDJjy/p/3095246.html
Copyright © 2020-2023  润新知