题意:算出1/n的结果,循环小数只输出第一个循环节
策略:模拟1除去n即可。
判断是否是循环节只需要找到%n之后的模是否出现就好了。
代码:
#include <stdio.h> #include <string.h> #define M 100005 bool vis[M]; int main(){ int t, n; scanf("%d", &t); while(t --){ scanf("%d", &n); if(n == 1||n == -1){ printf("%d", n); continue; } if(n < 0){ n = -n; printf("-"); } memset(vis, 0, sizeof(vis)); int cur = 1; printf("0."); vis[1] = 1; while(cur){ cur *= 10; printf("%d", cur/n); cur %= n; if(vis[cur]) break; else vis[cur] = 1; } puts(""); } return 0; }
题目链接:点击打开链接
时间: 2024-12-31 03:33:28