ACM(数学问题)——UVa202:输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。
主要思路:
通过模拟除法运算过程,来判断循环节结束的位置,不断将余数*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的循环小数表示以及循环节长度。的更多相关文章
- 51nod 1035 最长的循环节 数学
1035 最长的循环节 题目连接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1035 Description 正整 ...
- ACM数学
1.burnside定理,polya计数法 这个专题我单独写了个小结,大家可以简单参考一下:polya 计数法,burnside定理小结 2.置换,置换的运算 置换的概念还是比较好理解的,< ...
- js限制文本框只能输入整数或者带小数点[转]
这篇文章是关于js限制文本框只能输入整数或者带小数点的内容,以下就是该内容的详细介绍. 做表单验证的时候是否会碰到验证某个输入框内只能填写数字呢,仅允许输入整数数字或者带小数点的数字.下面这段代码也许 ...
- EditText 限制输入整数和小数 的位数
如题,本文主要说的就是 如何限制 EditText 中 可输入整数和小数 的位数 . 近期,由于公司业务需求中有价格输入功能,给出的要求说是,必须整数能输入几位,小数能输入几位...好嘛,产品一句话 ...
- JS-正则表达式 限制输入整数、小数
//只可以输入整数 onkeyup="value=value.replace(/[^\d]/g,'')" //可以输入数字 包括小数 onkeyup="value=val ...
- ACM数学知识体系
在盛情收到学弟邀请给他们整理ACM数学方面的知识体系,作为学长非常认真的弄了好久,希望各学弟不辜负学长厚爱!!!非常抱歉因为电脑全盘格式化好多word.PPT都丢失,我尽量具体地给大家找到各知识点学习 ...
- php实现 查找输入整数二进制中1的个数
php实现 查找输入整数二进制中1的个数 一.总结 一句话总结: 1.if($j&intval($num)){}的作用是什么? 1 <?php 2 while($num=trim(fge ...
- js 输入整数
1.我用 /^\+?[1-9][0-9]*$/ 貌似不对(小数也可以输入) 2.输入整数 n = /^[1-9]\d*$/; . -]\d*$/; //判断字符串是否为数字 if (!value) ...
- JS事件 编程练习-自制计算器 使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。
编程练习 使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElement ...
随机推荐
- github 解决 Agent admitted failure to sign using the key
公司迁移git 新库,重新迁移数据. 添加 ssh key 1. 首先要在新git 库管理平台 添加新的ssh-key : 本机上执行 ssh-keygen -t rsa -C "Your ...
- HTML5 关于本地操作文件的方法
由于传统 b/s 开发出于安全性的考虑,浏览器对于本地文件的操作权限几乎没有,用户想要操作一个文件基本都是采用先上传到服务器, 再回显给浏览器供用户编辑,裁剪等的方法,这种方式虽然可行,但其对于服务器 ...
- Java 8 Nashorn JavaScript
转自:https://www.runoob.com/java/java8-nashorn-javascript.html Nashorn 一个 javascript 引擎. 从JDK 1.8开始,Na ...
- 正则简单操作cookie、url search
正则操作cookie.url getCookie function getCookie(key) { var cookies = window.document.cookie, reg = new R ...
- list<T>升序、降序
List<test> list = new List<test> (); var result = list.OrderByDescending(p => p.we).T ...
- F查询和Q查询,事务及其他
F查询和Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个我们自己设定的常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的比较.F ...
- pyhon的yileld的一点笔记
yield感觉很神秘,感觉也不好理解,学习pyhon最后终归是要学习这个东西,研究了一段时间,把自己的笔记写下来 说简单点就是遇到yield就停止往下执行代码,也包括不执行yield这条语句,然后返回 ...
- 3G设置linux路由-iptables配置
1.如何区分iptables的PREROUTING和POSTROUTING链 (引自http://jingyan.baidu.com/article/aa6a2c143d84470d4c19c4cf. ...
- 输入一段字符串,统计其中的数字,字母,空格,其他字符的方法 ----python---
1.以简单的循环分支实现字符统计 str1 = input("输入字符串:") num=0;word=0;space=0;other=0; for i in str1: if i. ...
- python 并发编程 锁 / 信号量 / 事件 / 队列(进程间通信(IPC)) /生产者消费者模式
(1)锁:进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理. 虽然使用加锁的形式实现了 ...