题意:算出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;
}
题目链接:
点击打开链接