循环小数
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
我们可爱的 c小加 近段儿正在潜心研究数学,当他学习到循环小数这一部分时不是太明白循环体是什么意思(比如说3.23232323的循环体是23、2323、23232323),假设我们现在的循环小数都是严格循环的并且有限的,也就是说不出现2.16666666(循环体为6,长度为1)的情况,只有123123这样的循环出现。给他一个小数,他需要找出最小循环体的长度、循环体和循环的次数,请你帮他解决这个问题。
-
输入
-
输入的第一行是t,表示有t组测试数据(t<=100)。
随后的t行,每行都是一个小于10并且大于0的小数(总长度<=200)。
输出
- 对每组输入,输出结果单独成行,输出最小循环体的长度、循环体和出现循环的次数。 样例输入
-
3 8.6987698769876987 0.666 5.1
样例输出
-
4 6987 4 1 6 3 1 1 1
来源
- 例题改编 上传者
-
xiewuqiang
ac代码
#include<stdio.h> #include<string.h> int main() { int n; scanf("%d",&n); while(n--) { char s[100000]; int i,len,t=0,j,w=0,m; scanf("%s",s); len=strlen(s); for(i=3;i<len;i++) { if(s[i]==s[2]) { for(j=3;j<i;j++) if(s[j]!=s[j+(i-2)]) break; if(j==i) { w=1; m=i; } if(w) break; } } t=i-2; printf("%d ",t); for(j=2;j<i;j++) printf("%c",s[j]); printf(" %d\n",(len-2)/t); } }
-
输入的第一行是t,表示有t组测试数据(t<=100)。