(WA) 求改..UVa202 Repeating Decimals 循环小数 紫书习题3-8
2015-04-01 10:01
501 查看
提交还是wa, 怎么改啊….
参考了http://www.2cto.com/kf/201408/322120.html。
思路写在了代码注释里。
代码:
注意:其中分子是余数X10, 为避免a/b为0, 不用%符号来取得余数, 用A[0][q] = (A[0][q-1] - b*A[1][q-1])*10;
参考了http://www.2cto.com/kf/201408/322120.html。
思路写在了代码注释里。
代码:
//xi 3-8 Repeating Decimals.cpp /*第0步,分子是5,分母是7(分母在整个除法中始终不变),5/7的商是0,代表这个除法的整数部分是0,,余数是5,乘以10,得50作为第1步的分子;50/7的商为7,代表这个除法的第一位小数是7,余数是1,乘以10,得10作为第2步的分子...可以发现每步的除法只跟分子有关,也就是当分子出现重复值,如上图第1步和第7步的分子值都为50时,第7步后面的运算其实是在重复第1步至第6步间的运算。所以第1步至第7步就是一个循环节。*/ #include <cstdio> using namespace std; int A[2][3010], p, q;//程序实现中,可以不用存储余数的值,只需存储上 //图中的分子和商,我定义了A[2][3010],用A[0] //[j]存储第j步的分子, //A[1][j]存储第j步的商。注意最后的数值由商可以直接构成 int myfind() //找i位之前是否有重复分子出现;有则返回周期len,否则返 //回-1. { for(p = 1; p < q; p++) { if(A[0][p] == A[0][q]) return q - p; } return -1; } int main() { int kase, a, b, i, len; for(kase = 1; scanf("%d%d", &a, &b) == 2; kase++) { A[0][0] = a; A[1][0] = a/b; for(q = 1; ; q++) { A[0][q] = (A[0][q-1] - b*A[1][q-1])*10; //分子 //, 一直X10 //A[0] //[q] = 10*A[0][q-1] % A[1][q-1]; //不能这样 //写, 因为这样写可能分母为0 A[1][q] = A[0][q] / b; //商 len = myfind(); if(len > 0) break; } printf("%d/%d = %d.", a, b, A[1][0]); for(int i = 1; i < p; i++) printf("%d", A[1][i]); putchar('('); for(int i = p; i < q; i++) { if(i > 50) { printf("..."); break; } printf("%d", A[1][i]); } printf(")\n %d = number of digits in reperting cycle\n\n", len); } return 0; }
注意:其中分子是余数X10, 为避免a/b为0, 不用%符号来取得余数, 用A[0][q] = (A[0][q-1] - b*A[1][q-1])*10;
相关文章推荐
- 习题 3-8 循环小数 Repeating Decimals UVa 202
- 算法竞赛入门经典(第2版)习题3-8 循环小数 Repeating Decimals UVa202
- UVA 202 - Repeating Decimals【循环小数循环节】
- 循环小数(Repeating Decimals, ACM/ICPC World Finals 1990, UVa202)
- uva202循环小数Repeating Decimals
- UVA202循环小数Repeating Decimals
- UVa 202 Repeating Decimals(循环小数)
- UVA202 - Repeating Decimals(循环小数循环节)
- UVa202-Repeating Decimals-循环小数-字符串、模拟
- UVa 202 Repeating Decimals(循环小数)
- UVA 202 - Repeating Decimals【循环小数循环节】
- UVA 202 - Repeating Decimals(循环小数循环节)
- uva 202 - Repeating Decimals(循环小数)
- 《算法竞赛入门经典2ndEdition 》习题3-8 循环小数(Repeating Decimals, Uva202)
- Uva-202 - Repeating Decimals-WA to AC
- 算法竞赛入门经典(第二版) 习题3-8 循环小数(Repeating Decimals) UVa202 Finals1990
- 小紫书 习题 3-8(UVA 202) 循环小数(Repeating Decimals)
- 习题3-8 循环小数(Repeating Decimals, ACM/ICPC World Finals 1990, UVa202)
- 【白书之路】UVa 202 Repeating Decimals 计算小数循环节
- 习题3-8 循环小数 UVa202