主要思路:

通过模拟除法运算过程,来判断循环节结束的位置,不断将余数*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. python2操作MySQL

    #coding=utf-8   import MySQLdb   conn = MySQLdb.connect(host='localhost',user='root',passwd='123456' ...

  2. Python module ---- abc

    python中并没有提供抽象类与抽象方法,但是提供了内置模块abc(abstract base class)来模拟实现抽象类.  ABC,Abstract Base Class(抽象基类),主要定义了 ...

  3. HTTP请求头与响应头(转载)

    欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/400503 ...

  4. golang基于etcd实现分布式锁(转)

    下面描述使用 Etcd 实现分布式锁的业务流程,假设对某个共享资源设置的锁名为:/lock/mylock 步骤 1: 准备 客户端连接 Etcd,以 /lock/mylock 为前缀创建全局唯一的 k ...

  5. letecode242有效字母的异位词

    bool isAnagram(char* s, char* t) { ] = {}; ] = {}; int lenS = strlen(s); int lenT = strlen(t); ;i< ...

  6. winfrom中pictureBox控件的部分使用方法

    一.后台属性 1.pictureBox1.Image显示图片 2.pictureBox1.ImageLocation存储和提取图片路径 二.面板属性 1.Picturebox控件SizeMode属性 ...

  7. 自己电脑组一个Wifi热点

    ① 在cmd窗口 ssid 是wifi名称.key是密码 netsh wlan set hostednetwork mode=allow ssid=yb key=15564130 ② ③ 运行脚本 新 ...

  8. 【spring】使用spring过程中踩到的坑

    这里简单记录一下,学习spring的时候碰过的异常: 异常:org.springframework.beans.factory.BeanDefinitionStoreException: Unexpe ...

  9. Python设计模式 - UML - 交互概述图(Interaction Overview Diagram)

    简介 交互概述图是将不同交互图衔接在一起的图,属于UML2.0的新增图.交互概述图并没有引入新的建模元素,其主要元素来自于活动图和时序图.交互概述图侧重从整体上概览交互过程中的控制流,包括交互图之间的 ...

  10. python-django(创建项目、应用、运行)

    1.创建项目.应用 方法一.命令行创建 <1>.创建项目命令 django-admin startproject  项目名称 <2>.创建应用命令 django-admin s ...