题意:就是计算两整数相除所得小数的循环数 开始时没思路 勉勉强强把两数相除的小数部分能用数组处理并输出 但找不到循环的始末 后来经过同学启发 算了个1/7 立马有了思路 当余数跟之前某个余数相同时就是一个循环 最坑的还有格式 输出样例有空行 可输出描述里没说啊哭还有个小插曲就是输出样例里最后一个是超50的样例 输出的 99 = number of digits in repeating cycle 然后我当成超50就输出99再见醉给自己了
代码如下:
#include
#include
using namespace std;
int r[3003],u[3003],s[3003];
int main()
{
int n,m,t;
while (cin >> n >> m) {
t = n;
memset(r, 0, sizeof(r));
memset(u, 0, sizeof(u));
int count = 0;
r[count ++] = n/m;
n = n%m;
while (!u[n] && n) {
u[n] = count;
s[count] = n;
r[count ++] = 10*n/m;
n = 10*n%m;
}
cout<
<<"/"<
<<" = "<
<<"."; for (int i = 1 ; i < count && i <= 50 ; ++ i) { if (n && s[i] == n) cout<<"("; cout<
50) cout<<"..."; cout<<")"<