zoukankan      html  css  js  c++  java
  • Uva 202.Repeating Decimals

    题目大意就是取循环小数的循环节

    思路比较清晰

    完全模拟人脑做除法,同时分组标记被除数和除数,判断循环节

    中间需要判断是除尽和没除尽两种情况

    最后要关注格式,每两个输出要有空行,且第二行前有3个空格

    一下代码

     1 #include <cstdio>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 #define REP(n) for(int o=0;o<n;o++)
     6 
     7 struct node{
     8     int a,b;
     9 };
    10 
    11 bool Do();
    12 int visited(int a,int b,node n[],int len);
    13 int main(){
    14     //freopen("in.txt","r",stdin);
    15     while(Do());
    16     return 0;
    17 }
    18 
    19 bool Do(){
    20     int a,b;
    21     node mark[10000];
    22     int cnt=1;
    23     int decimal[10000];
    24 
    25     if(scanf("%d%d",&a,&b)==EOF)return false;
    26     REP(10000)mark[o]={0,b};
    27     REP(10000)decimal[o]=-1;
    28     
    29     int x=(a%b)*10;
    30     while(1){
    31         //printf("    %d / %d = %d ...... %d       mark[%d]={%d,%d}
    ",x,b,x/b,x%b,cnt,x,b);
    32         decimal[cnt]=x/b;
    33         if(visited(x,b,mark,cnt))break;
    34         mark[cnt]={x,b};
    35         x=(x%b)*10;
    36         cnt++;
    37     }
    38     cnt--;
    39     //REP(cnt+1)printf("    mark[%d]={%d,%d}
    ",o,mark[o].a,mark[o].b);
    40     int begin=visited((mark[cnt].a%b)*10,mark[cnt].b,mark,cnt);
    41 
    42     //printf("
    
    %d
    
    ",begin);
    43     printf("%d/%d = %d.",a,b,a/b);
    44     for(int i=1;i<=cnt;i++){
    45         if(begin==i)printf("(");
    46         printf("%d",decimal[i]);
    47         if(i==50){
    48             printf("...");
    49             break;
    50         }
    51     }
    52     if(begin==0)printf("(0");
    53     printf(")
       %d = number of digits in repeating cycle
    
    ",begin==0?1:cnt-begin+1);
    54     return true;
    55 }
    56 
    57 int visited(int a,int b,node n[],int len){
    58     for(int o=1;o<=len;o++){
    59         if(n[o].a==a&&n[o].b==b){
    60             return o;
    61         }
    62     }
    63     return 0;
    64 }
  • 相关阅读:
    数据库相关
    linux相关
    类相关
    异常处理
    一些类的概念
    安装插件
    接口开发
    redis相关
    大数据-概览
    大数据-浅谈OLTP与OLAP
  • 原文地址:https://www.cnblogs.com/ohyee/p/5152646.html
Copyright © 2011-2022 走看看