输入整数a和b(0<=a<=3000,1<=b<=3000),输出a/b的循环小数表示以及循环节长度。

例如,a=5,b=43,小数表示为0.(116279069767441860465),循环字节长度为21

这个题,忘了怎样使a/b的结果保留多位小数!!!

具体方法为计算得出其多位小数(位数要足够大),再判断其周期,周期不会超过分母就在小于范围内的周期一个一个判断即可。

注意,该题循环不一定是从小数点后一位数开始,可能从之后才开始循环

应该想到竖式,那就是求小数点后n位的方法!  a/b求出整数位,接着(a%b)*10/b即为小数点后一位,下一位a=a%b继续上一步骤可得

写吐了

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
using namespace std;
int p[];
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)==&&b){
int t=a%b,k=,c,x;
x=floor((double)a/b);
printf("%d/%d=%d.",a,b,x);
memset(p,,sizeof(p));
for(int i=;i<;i++){ //计算小数点后3000位小数
t*=;
p[i]=t/b;
t%=b;
}
while(){ //循环是从第k位开始
bool flag;
for (c=;c<=b;c++){ //周期c是大于0且小于等于b的人一个数
flag=true;
for (int j= ;j<-k;j++)
if(p[j+k]!=p[j%c+k]){ //j%c+k为第一个周期
flag=false;
break;
}
if(flag)break;
//cout<<c<<" *"<<k<<endl;
}
if(flag){
for(int j=;j<k;j++)printf("%d",p[j]);
printf("(");
if (c<= )for(int j=k;j<c+k;j++)printf("%d",p[j]);
else{
for(int j=k;j<k+;j++)printf("%d",p[j]);
printf("...");
}
printf(")\n");
printf(" %d = number of digits in repeating cycle\n\n",c);
break;
}
k++;
}
}
//system("pause");
return ;
}

循环小数 UVa202的更多相关文章

  1. uva202:循环小数(循环节+抽屉原理)

    题意: 给出两个数n,m,0<=n,m<=3000,输出n/m的循环小数表示以及循环节长度. 思路: 设立一个r[]数组记录循环小数,u[]记录每次的count,用于标记,小数计算可用 r ...

  2. 算法习题---3.08循环小数(UVa202)

    一:题目 输入整数a和b(<=a<=,<=b<=),输出a/b的循环小数表示以及循环节长度. 例如,a=,b=,小数表示为0.(),循环字节长度为21 当循环节长度超过50时, ...

  3. ACM(数学问题)——UVa202:输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。

    主要思路: 通过模拟除法运算过程,来判断循环节结束的位置,不断将余数*10再对除数取余得到新的余数,并记录下来,知道出现的余数之前出现过,此时小数开始循环. 例如: 假设   ->     a ...

  4. [LeetCode] Fraction to Recurring Decimal 分数转循环小数

    Given two integers representing the numerator and denominator of a fraction, return the fraction in ...

  5. nyoj 329 循环小数【KMP】【求最小循环节长度+循环次数+循环体】

    循环小数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 我们可爱的 c小加 近段儿正在潜心研究数学,当他学习到循环小数这一部分时不是太明白循环体是什么意思(比如说3 ...

  6. ACM—循环小数转变成分数知识点_C++实现

    在小学的时候,我们的学生都能把“整数表示成分母是1的分数”,而且大多数学生也都能把有限小数和循环小数表示成分数的形式.这样,整数.分数.有限小数.循环小数都属于有理数.教科书中说“整数和分数统称有理数 ...

  7. 无限循环小数POJ1930

    题意:给定一个无限循环小数,求其分数形势,要求分母最小 分析:看了别人的题解才做出来的,将无限循环小数转化成分数,分为纯循环和混循环两种形式. (1)对于纯循环:用9做分母,有多少个循环数就几个9,比 ...

  8. [刷题]算法竞赛入门经典 3-7/UVa1368 3-8/UVa202 3-9/UVa10340

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 都是<算法竞赛入门经典(第二版)>的题目,标题上没写(第二版) 题目:算法竞赛入门经典 3-7/UVa13 ...

  9. POJ 1930 Dead Fraction (循环小数-GCD)

    题意:给你一个循环小数,化成分数,要求分数的分母最小. 思路:暴力搜一遍循环节 把循环小数化分数步骤: 纯循环小数化分数 纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位 ...

随机推荐

  1. 8 fastJson的使用

    Fastjson介绍 Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发. 1.遵循http://json.org标准,为其官方网站收录的参考实现之一. 2.功能qiang打, ...

  2. C#限制转换后的double小数点留1位

    glb_timer1WaitSeconds += 0.1; string s = string.Format("{0:f1}", glb_timer1WaitSeconds);

  3. Cut the sticks

    def main(): n = int(raw_input()) arr = map(int, raw_input().strip().split()) for i in range(n): cutN ...

  4. MVC 学习随笔(一)

    Model的绑定. (一)使用NameValueCollectionValueProvider C# 对NameValueCollectionValueProvider的支持是通过下面的类实现的 // ...

  5. c# 输出excel、word实例只需一行代码

    第一.首先下载 WindICFrameNet.dll 下载地址:http://pan.baidu.com/s/1dDBqC9r 第二.前台代码 <div style="display: ...

  6. [HDU] 3711 Binary Number [位运算]

    Binary Number Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  7. scons构建自己的一个简单的程序

    我在我的D盘下,新建一个文件夹,命名为try.在这个文件夹下新建两个文件,一个文件是test.c .里面的程序很简单: #include<stdio.h>#include<stdli ...

  8. LeetCode_Sort Colors

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  9. mysql 的 decimal类型

    最近做项目时将decimal定义成了decimal(5,2),然后等到最大的结果都是999.99,找了很多地方找不出bug在哪里插入很更新的数据都是正确的而结果却都是999.99,最后才知道decim ...

  10. C# WEB API ApiController 修改response header contentType

    var res = Request.CreateResponse(HttpStatusCode.OK, file); res.Content.Headers.ContentType = new Med ...