zoukankan      html  css  js  c++  java
  • USACO 2.4.5 Fractions to Decimals 题解

    【算法】模拟  【难度】★☆☆☆☆


    这道题不难,关键是长除法。
    手动模拟一下长除法就会发现,小数部分循环的标志是余数的重复出现。
    所以记录余数就可以了。注意一下整除的特殊情况就可以了,我因为这个WA了一次。
    【收获】要注意特判 

    View Code
     1 /*
    2 ID: wsc5001
    3 LANG: C
    4 TASK: fracdec
    5 */
    6 #include <stdio.h>
    7 #include <stdlib.h>
    8 int n,d;
    9 int checko[100010];
    10 int ans[100000];
    11 int main()
    12 {
    13 freopen("fracdec.in","r",stdin);
    14 freopen("fracdec.out","w",stdout);
    15 int i,j,k,e;
    16 int cha,mu;
    17 int sve=0,uasdf;
    18 int ct=0;
    19 scanf("%d%d",&n,&d);
    20
    21 for (i=0;i<100010;i++) checko[i]=-2;
    22
    23 e=n/d;k=0;
    24 while (e>0)
    25 {k++;e=e/10;}
    26 if (n/d==0) k=1;
    27 printf("%d.",n/d);ct+=k+1;if (ct==76){printf("\n");ct=0;}
    28
    29 mu=n%d*10;
    30 if (mu==0) {printf("0");return 0;}
    31 checko[mu/10]=0;
    32 i=0;
    33 while (1)
    34 {
    35 if (cha==0) {sve=-999999;break;}
    36 ans[i]=mu/d;
    37 cha=mu%d;
    38 if (checko[cha]==-2)
    39 {
    40 checko[cha]=i+1;
    41 mu=cha*10;
    42 i++;
    43 }
    44 else
    45 {i++;sve=checko[cha];break;}
    46 }
    47 mu=cha*10;
    48 ans[i]=mu/d;
    49 uasdf=i;
    50
    51 if (sve==-999999)
    52 {
    53 for (i=0;i<uasdf;i++)
    54 {printf("%d",ans[i]);ct++;if (ct==76){printf("\n");ct=0;}}
    55 }
    56 else
    57 {
    58 for (i=0;i<sve;i++)
    59 {printf("%d",ans[i]);ct++;if (ct==76){printf("\n");ct=0;}}
    60 if (uasdf>sve)
    61 {
    62 printf("(");ct++;if (ct==76){printf("\n");ct=0;}
    63 for (i=sve;i<uasdf;i++)
    64 {printf("%d",ans[i]);ct++;if (ct==76){printf("\n");ct=0;}}
    65 printf(")");ct++;if (ct==76){printf("\n");ct=0;}
    66 }
    67 }
    68 printf("\n");
    69
    70 //system("pause");
    71 fclose(stdin);
    72 fclose(stdout);
    73 }



  • 相关阅读:
    python3 TypeError: a bytes-like object is required, not 'str'
    Centos 安装Python Scrapy PhantomJS
    Linux alias
    Vim vimrc配置
    Windows下 Python Selenium PhantomJS 抓取网页并截图
    Linux sort
    Linux RSync 搭建
    SSH隧道 访问内网机
    笔记《鸟哥的Linux私房菜》7 Linux档案与目录管理
    Tornado 错误 "Global name 'memoryview' is not defined"
  • 原文地址:https://www.cnblogs.com/loveidea/p/2416935.html
Copyright © 2011-2022 走看看