zoukankan      html  css  js  c++  java
  • 【USACO 2.4】Fractions to Decimals(分数转小数)

    题意:给你N/D的分数,让你输出等价的小数,如果是循环小数,用括号把循环节包起来。如果是整数,后面保留一位小数。每行最多输出76个字符。

    题解:模拟除法,如果余数是第二次出现,则代表第一次出现的位置到此为循环节,注意输出,注意输出格式,注意输出每行最多76个字符。学习了一下题解的写法,先写入字符串ans,最后76个一行输出的就很好写了。

    /*
    TASK: fracdec
    LANG:C++
    */
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #define N 100100
    using namespace std;
    int n,d,p[N];
    char ans[N],dec[N];
    int main(){
        freopen("fracdec.in","r",stdin);
        freopen("fracdec.out","w",stdout);
        scanf("%d%d",&n,&d);
        sprintf(ans,"%d.",n/d);
        n%=d;
        memset(p,-1,sizeof p);
        for(int i=0;;i++){
            p[n]=i;
            n*=10;
            dec[i]=n/d+'0';
            n%=d;
            if(!n){
                sprintf(ans+strlen(ans),"%s",dec);
                break;
            }
            if(p[n]!=-1){
                sprintf(ans+strlen(ans),"%.*s(%s)",p[n],dec,dec+p[n]);
                break;
            }
        }
        for(int i=0;ans[i];i+=76)
            printf("%.76s
    ",ans+i);
        return 0;
    }

      

  • 相关阅读:
    积累
    AnkhSVN使用记录
    时间戳
    Nhibernate
    Css的sb问题
    ajax
    WAS资料收集
    CryStal资料收集
    Decorator模式
    MSDN WebCast网络广播全部下载列表
  • 原文地址:https://www.cnblogs.com/flipped/p/6066250.html
Copyright © 2011-2022 走看看