主要思路:

通过模拟除法运算过程,来判断循环节结束的位置,不断将余数*10再对除数取余得到新的余数,并记录下来,知道出现的余数之前出现过,此时小数开始循环。

例如:

假设   ->     a 是商  b是余数

(1/7) ->   (1)  a=1/7=0, b=1%7=;

    (2)  a=(b*10)/7=1  ,  b=(b*10)%7=3;

    (3)  a=(b*10)/7=4  ,  b=(b*10)%7=2;

    (4)  a=(b*10)/7=2  ,  b=(b*10)%7=6;

    (5)  a=(b*10)/7=8  ,  b=(b*10)%7=4;

    (6)  a=(b*10)/7=5  ,  b=(b*10)%7=5;

    (7)  a=(b*10)/7=7  ,  b=(b*10)%7=;   //与已有的余数相同开始循环

    (8)  a=(b*10)/7=1  ,  b=(b*10)%7=3;

AC代码:

 #include <stdio.h>

 #define MAXN 3000

 int decimal[MAXN];
int numerator[MAXN]; int main(void)
{
int n, d, start, end, i, j; while(scanf("%d%d", &n, &d) != EOF) {
i = ;
numerator[i] = n % d;
decimal[i] = numerator[i] * / d; for(i=; ;i++) {
numerator[i] = numerator[i-] * % d;
decimal[i] = numerator[i] * / d; for(j=; j<i; j++)
if(numerator[j] == numerator[i])
break;
if(j < i) {
start = j;
end = i - ;
break;
}
if(numerator[i] == ) {
start = i;
end = i;
break;
}
} printf("%d/%d = %d.", n, d, n / d);
for(i=; i<start; i++)
printf("%d", decimal[i]);
printf("(");
if(end - start + > ) {
for(i=start; i<start+; i++)
printf("%d", decimal[i]);
printf("...");
} else {
for(i=start; i<=end; i++)
printf("%d", decimal[i]);
}
printf(")\n");
printf(" %d = number of digits in repeating cycle\n\n", end - start + );
} return ;
}

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

  1. 51nod 1035 最长的循环节 数学

    1035 最长的循环节 题目连接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1035 Description 正整 ...

  2. ACM数学

     1.burnside定理,polya计数法 这个专题我单独写了个小结,大家可以简单参考一下:polya 计数法,burnside定理小结 2.置换,置换的运算 置换的概念还是比较好理解的,< ...

  3. js限制文本框只能输入整数或者带小数点[转]

    这篇文章是关于js限制文本框只能输入整数或者带小数点的内容,以下就是该内容的详细介绍. 做表单验证的时候是否会碰到验证某个输入框内只能填写数字呢,仅允许输入整数数字或者带小数点的数字.下面这段代码也许 ...

  4. EditText 限制输入整数和小数 的位数

    如题,本文主要说的就是  如何限制 EditText 中 可输入整数和小数 的位数 . 近期,由于公司业务需求中有价格输入功能,给出的要求说是,必须整数能输入几位,小数能输入几位...好嘛,产品一句话 ...

  5. JS-正则表达式 限制输入整数、小数

    //只可以输入整数 onkeyup="value=value.replace(/[^\d]/g,'')" //可以输入数字 包括小数 onkeyup="value=val ...

  6. ACM数学知识体系

    在盛情收到学弟邀请给他们整理ACM数学方面的知识体系,作为学长非常认真的弄了好久,希望各学弟不辜负学长厚爱!!!非常抱歉因为电脑全盘格式化好多word.PPT都丢失,我尽量具体地给大家找到各知识点学习 ...

  7. php实现 查找输入整数二进制中1的个数

    php实现 查找输入整数二进制中1的个数 一.总结 一句话总结: 1.if($j&intval($num)){}的作用是什么? 1 <?php 2 while($num=trim(fge ...

  8. js 输入整数

    1.我用 /^\+?[1-9][0-9]*$/ 貌似不对(小数也可以输入) 2.输入整数  n = /^[1-9]\d*$/; . -]\d*$/; //判断字符串是否为数字 if (!value) ...

  9. JS事件 编程练习-自制计算器 使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。

    编程练习 使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElement ...

随机推荐

  1. 实现自己的HashMap

    准备工作 ,实现自己的Map.entry.代码如下 : import java.util.Map;public class MapEntry<K,V> implements Map.Ent ...

  2. python学习(二)--数据类型

    数据类型 1.工厂函数 type() int() float() str() list() tuple() dict() bool() set()工厂函数的理解:工厂函数看上去有点像函数,实质上他们是 ...

  3. highcharts的用法

    <script type="text/javascript" src="../js/highcharts.js"></script>&l ...

  4. python学习笔记----正则表达式

    正则: regular expression 常用的场景: #正则的包 >>> import re #match:开头匹配,匹配到,返回一个匹配对象,否则返回None >> ...

  5. Java后端面试的一切技巧和常见的问题经验总结

    原文地址:cnblogs.com/JavaArchitect/p/10011253.html 上周,密集面试了若干位Java后端候选人,工作经验在3到5年间.我的标准其实不复杂(适用90%小小小公司, ...

  6. Linux 内核的 Makefile

    Linux内核的配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是: 1.Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linux 内核的编译规则: 2.配 ...

  7. JeecgBoot版本4月份新版即将发布,抢先体验。。

    JeecgBoot版本4月份新版即将发布,抢先体验.. 即将发布版本-更新日志:     1.代码生成器GUI工具     2.支持一对多代码生成器     3.支持按钮权限     4.支持数据权限 ...

  8. 在Linux机器上安装MySQL

    在Linux机器上安装MySQL,仔细认真些就没有问题. CentOS 7下MySQL 5.7安装.配置与应用_数据库技术_Linux公社-Linux系统门户网站 搞不定的话,直接删掉这个MySQL, ...

  9. 1503.02531-Distilling the Knowledge in a Neural Network.md

    原来交叉熵还有一个tempature,这个tempature有如下的定义: \[ q_i=\frac{e^{z_i/T}}{\sum_j{e^{z_j/T}}} \] 其中T就是tempature,一 ...

  10. 实现对Java配置文件Properties的读取、写入与更新操作

    /** * 实现对Java配置文件Properties的读取.写入与更新操作 */ package test; import java.io.BufferedInputStream; import j ...