输入整数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. rr

        times = gcd(rotdist,length);  printf( ;i<times;i++) {  t = vec[i];   j = i;    ) {   k = j+ r ...

  2. T-SQL语句——UNION, EXCEPT, INTERSECT

    UNION,EXCEPT, INTERSECT关键字用于对集合的查询,它们的作用分别为: UNION:合并两个或多个 SELECT 语句的结果集,并把重复结果去除: UNIONALL:合并两个或多个 ...

  3. 基于cygwin构建u-boot(三)make错误忽视

    接上文,修改gcc 的-std标准后,.depend文件处理仍然出现了错误: 五.错误:make中命令报错(sed找不到需要的文件) 错误告警如下: make -C examples/api all ...

  4. Bootstrap 实例 - 模态框(Modal)插件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. [POJ] 3461 Oulipo [KMP算法]

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23667   Accepted: 9492 Descripti ...

  6. C++之------进制学习

    碰到一些寄出的东西不是很理解,就是关于多进制在代码中的转换: 比喻一个数number的多进制表示方法:B:二进制 Q:八进制 D:十进制 H:十六进制 二进制:0bnumber           ( ...

  7. XJOI网上同步训练DAY3 T2

    考试的时候已经想出来怎么做了,但是没有时间打了T_T 思路:我们考虑将询问以lim排序,然后树链剖分,把边作为线段树的节点,然后随着询问lim的增大,改变线段树中节点的信息,然后每次询问我们用树链剖分 ...

  8. 《Programming WPF》翻译 第7章 7.我们进行到哪里了?

    原文:<Programming WPF>翻译 第7章 7.我们进行到哪里了? WPF提供了一个范围的高质量生成和合成服务.一组形状元素支持各种的绘图基础.一些笔刷类型是可利用的,对于决定如 ...

  9. PostgreSQL与MySQL比较(转)

    Mysql 使用太广泛了,以至于我不得不将一些应用从mysql 迁移到postgresql, 很多开源软件都是以Mysql 作为数据库标准,并且以Mysql 作为抽象基础的,但是具体使用过程中,发现M ...

  10. 无人参与安装IIS 6.0

    使用脚本安装 IIS 从“开始”菜单,单击“运行”. 在“打开”框中,键入 cmd,然后单击“确定”. 在命令提示符下,键入 Sysocmgr.exe /i:sysoc.inf /u:%path_to ...