标签:style blog color os 2014 for
4 2 3 7 168
0.5 0.3 0.142857 0.005952380
直接模拟求余数的方法,用一个数组记录商,另外一个数组记录余数是否出现过,如果出现过,说明是第二次循环的开始,在此处跳出循环即可。
#include<cstdio> #include<cstring> const int MAXN = 100005; int a[MAXN], vis[MAXN]; int main() { int n, t, i; scanf("%d",&t); while(t--) { memset(vis, 0, sizeof(vis)); scanf("%d",&n); if(n < 0) { printf("-"); n = -n; } if(n == 1) printf("1\n"); else { int s = 1, num = 0; vis[s] = 1; while(1) { s *= 10; a[num++] = s / n; s %= n; if(vis[s] || s == 0) break; //余数再次出现或者余数为0(即可以整除) vis[s] = 1; } printf("0."); for(i = 0; i < num; i++) printf("%d", a[i]); printf("\n"); } } return 0; }
NYOJ 330 一个简单的数学题,布布扣,bubuko.com
标签:style blog color os 2014 for
原文地址:http://blog.csdn.net/lyhvoyage/article/details/37873181