Expanding Fractions

题目:给你一个分数的分子和分母,求出他的循环节。

分析:模拟。根据鸽巢原理,设分母为m则计算中最多有m中不同的余数,,所以循环节小于m。

说明:每次记录余数*10在取新的余数即可。

#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>using namespace std;int n,m;int save[1001];int used[1001];int first[1001];int main(){while (~scanf("%d%d",&n,&m) && n+m) {memset(used, 0, sizeof(used));int count = 0;while (!used[n] && n) {used[n] = 1;save[count] = 10*n/m;first[n] = count ++;n = 10*n%m;}printf(".");for (int i = 0; i < count; ++ i) {if (i%50 == 49) printf("\n");printf("%d",save[i]);}if (!n)printf("\nThis expansion terminates.\n\n");elseprintf("\nThe last %d digits repeat forever.\n\n",count-first[n]);}return 0;}

失败是成功的亲娘,没有失败哪来的成功呢?诺贝尔如果不经历千万次的失败,

Expanding Fractions

相关文章:

你感兴趣的文章:

标签云: