HDU 2552 A simple problem
题意: Zty很痴迷数学问题.。一天,yifenfei出了个数学题想难倒他,让他回答1 / n。但Zty却回答不了^_^. 请大家编程帮助他.
输出1/n. (是循环小数的,只输出第一个循环节).
分析: 找循环节的时候看看是否出现了相同的被除数即可。
#include <stdio.h> #include <string.h> #define maxn 100010 #define clr(x) memset(x,0,sizeof(x)) int res[maxn]; int vis[maxn]; int main() { int top, i; int k, t, n; scanf("%d",&t); while (t--) { scanf("%d",&n); if (n < 0) { putchar('-'); n = -n; } if (n == 1) { printf("1\n"); continue; } k = 1; top = 0; clr(vis); vis[1] = 1; while (k) { k *= 10; res[top++] = k/n; k %= n; if (vis[k]) break; vis[k] = 1; } if (top) { printf("0."); for (i=0; i<top; i++) printf("%d",res[i]); putchar('\n'); } } return 0; }