这道题对我来说有点难,好好学习其中的思想,很重要滴!!
题目
描述
输入整数a和b(0<=a<=3000,1<=b<=3000),输出a/b的循环小数表示以及循环节长度。
样例输入
76 25
5 43
样例输出
76/25 = 3.04(0)
循环节长度为1
5/43 = 0.(116279069767441860465)
循环节长度为21
要点:
1.对于小数的处理,之前也做过,要用到小学的基本方法来处理,乘10取余
2.这里要出现循环小数,即出现了余数相同(除断了就特殊处理)
3.对于余数是否与前面出现的相同的处理很巧妙,用一个数组来处理!
4.最后只需要将出现重复的余数从头开始寻找,找到相同的知道循环节长度了
5.一点数学知识,对于a/b,余数只有b种情况(0,1,2…b-1),所以不用怕循环很多次
代码如下:(๑•̀ㅂ•́)و✧
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
const int mx = 3010;
int re[mx], de[mx], ce[mx]