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 ...
随机推荐
- mongodb集群部署
一.安装Mongodb(Tarballs) 1.检查依赖文件包: yum install libcurl openssl 2.解压文件到/usr/local/ tar -zxvf mongodb-li ...
- Activiti 框架学习
1:工作流的概念 说明: 1) 假设:这两张图就是华谊兄弟的请假流程图 2) 图的组成部分: 人物:范冰冰 冯小刚 王中军 事件(动作):请假.批准.不批准 工作流(Workflo ...
- 沙箱机制(Sandboxie)
一.沙箱是什么? 沙箱是一个虚拟系统程序,沙箱提供的环境相对于每一个运行的程序都是独立的,而且不会对现有的系统产生影响. 二.沙箱的应用 (1)搭建测试环境.沙箱的应用只能访问自己的应用访问目录,而不 ...
- 3.搭建Samba服务器
1.在CentOS7上yum安装samba服务: yum -y install samba 2.目前我是直接共享已经存在的目录,如果您需要共享一个未曾创建的目录,需要您新创建一个目录: vim /et ...
- redis伪集群脚本
#安装redis伪集群脚本,先把redis-..gem及启动脚本放在/data1/redis-cluster目录下,然后执行该脚本即可 #!/bin/bash set -e #获取redis本机ip ...
- centos7.4下的KVM虚拟机安装使用
本来是用的vmware,不过后来想试下KVM,想着装个ZSTACK也行,结果zstack使用网络安装没搞明白,把物理机系统毁了,这下彻底完蛋了,只好还装个centos了,但是又不想用VMWARE就想起 ...
- 用 ghostscript 转化PDF文件为图片 的参数设置
example: gswin32 -dSAFER -dBATCH -dNOPAUSE -r300 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sDEVICE=jp ...
- c#电子印章制作管理系统
产品名称:电子印章制作管理系统 版 本 号:v0.0.0.1产品说明:本产品采用位图绘制方式,主要针对OA.ERP.金融等行业取代实物印章的一款产品,本产品有以下特点1.制作方便,容易操作2.规格 ...
- hibernate的开始
1.1对象的持久化 对象持久化是指将内存中的对象保存到可永久保存的存储设备中(如磁盘)的一种技术.(hibernate是通过id来管理对象) 1.2怎样实现持久化 1 对象序列化 2 JDBC 3 O ...
- css第四天
四丶 补充:CSS Display(显示) 与 Visibility(可见性) display属性设置一个元素应如何显示,visibility属性指定一个元素应可见还是隐藏. 隐藏元素 - displ ...