3-8 uva 202 Repeating Decimals
来源:互联网 发布:适合程序员的机械键盘 编辑:程序博客网 时间:2024/06/08 17:57
背景:一开始没有什么头绪,只知道要模拟除法,甚至想用找周期的方法,发现根本不可行。。。。觉得自己数学简直是个渣,,连余数出现第二次则开始进入循环都想不到。。。
(感觉这题要收起来,等快要忘记的时候再拿出来写一写orz)
(感觉这题要收起来,等快要忘记的时候再拿出来写一写orz)
学习:就是利用模拟除法的方法,然后记录余数,若c这余数出现第二次则进入循环,最后计算循环节长度时要减去之前没有进入循环的位数。
#include<stdio.h>#include<string.h>int u[3003],s[3003],r[3003];int main(){int x,y;while (scanf("%d%d",&x,&y)==2){memset(u,0,sizeof(u));memset(r,0,sizeof(r));printf("%d/%d = ",x,y);int count=0; //count表示第几位小数 , count=0时则是整数部分 r[count++]=x/y;x=x%y;while (!u[x] && x) //u[n]==0表示余数还未出现过 {s[count]=x; //s[]用于记录余数 u[x]=count; //标记之前小数上已有几位数 r[count++]=10*x/y;x=10*x%y; }printf("%d.",r[0]);int i;for(i=1;i<count&&i<=50;i++){if(s[i]==x)printf("(");printf("%d",r[i]);}if(!x) //若x==0则表示被整除 printf("(0");if(i==51)printf("...");printf(")\n");printf(" %d = number of digits in repeating cycle\n\n",!x?1:count-u[x]); //记得用count-u[x] 减掉之前没有循环的部分 }return 0;}
0 0
- 【习题3-8】 UVA - 202 Repeating Decimals
- 3-8 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
- Ubuntu 14.04 LTS 使用
- 做程序的第一年2014年总结
- Path Sum
- 解析Java中文乱码的处理方法
- Android Activity 生命周期
- 3-8 uva 202 Repeating Decimals
- uva10375(数论)
- 【安卓笔记】气泡式ListView
- 各个银行信用卡对比,办哪个银行的信用卡比较好?
- 深度学习基础(四)PCA和Whitening
- Linux下蓝牙耳机的配置与测试
- 正则表达式基础教程
- CAKeyframeAnimation(关键帧动画)的简单使用
- php之session熟悉了解