UVA 202 Repeating Decimals
来源:互联网 发布:销量预测模型 python 编辑:程序博客网 时间:2024/05/16 09:43
UVA-202
题意:求m / n 的结果,并求循环结长度。循环结用()包住。
解题思路:整数除整数,那么它整数部分的值我们直接用整数 m/n 就形了,小数部分类似高精除法。
如何判断循环结?因为每次的余数 leave都会先乘 10 再除以 n 作为商,并 得到新的余数。如果一个余数leave出现两次,那么两次之间的串就为循环结。那么我们只要记录余数leave第一次出现的位置,第二次出现就表示开始循环了。注意控制输出。
/************************************************************************* > File Name: UVA-202.cpp > Author: Narsh > > Created Time: 2016年07月19日 星期二 09时57分00秒 ************************************************************************/#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;int m,n,leave,l,ans[3000000],p[3000000];bool pd[30000000];int main() { while (scanf("%d%d",&m,&n) != EOF) { memset(pd,true,sizeof(pd)); printf("%d/%d = %d.",m,n,m/n); leave=m%n; l=0; while (pd[leave]) { l++; pd[leave]=false; p[leave]=l; leave*=10; ans[l]=leave/n; leave %=n; } for (int i = 1; i < p[leave]; i++) printf("%d",ans[i]); printf("("); for (int i = p[leave],j = 1; i <=l && j <= 50; i++, j++){ printf("%d",ans[i]); if (j == 50 && i < l) printf("..."); } printf(")\n"); printf(" %d = number of digits in repeating cycle\n\n",l-p[leave]+1); }}
0 0
- UVa 202 - Repeating Decimals
- UVa 202 - Repeating Decimals
- UVa 202 - Repeating Decimals
- UVa 202 Repeating Decimals
- Uva 202 Repeating Decimals
- UVA - 202 Repeating Decimals
- UVa 202 Repeating Decimals
- UVa-202 - Repeating Decimals
- UVa 202 Repeating Decimals
- UVa 202 Repeating Decimals
- UVA - 202 Repeating Decimals
- Uva - 202 - Repeating Decimals
- UVA - 202 Repeating Decimals
- [UVA 202]Repeating Decimals
- UVa 202 Repeating Decimals
- uva 202 Repeating Decimals
- UVa 202 - Repeating Decimals
- UVa 202, Repeating Decimals
- 知识点:面向对象与面向过程
- 文本处理
- python3的迭代器和生成器
- 2016年7月19日考试总结
- 动态规划(5)求数组中最长递增子序列
- UVA 202 Repeating Decimals
- 接口
- 二叉树中和为某一值的路径
- 程序员的10句跟字面意思完全不同的常用语
- jQuery 之 删除元素(九)
- 今日首发
- 深入冒泡排序的的理解
- 对缓存的理解
- spring官网下载相关的文档方法