zoukankan      html  css  js  c++  java
  • 南阳329--循环小数(Kmp)

     循环小数

    时间限制: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
    做了这么多Kmp, 还是思路不清晰。
    ac:
     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 using namespace std;
     5 char a[220], b[220]; int p[220], lena, k;
     6 void Getp()
     7 {
     8     int i = 0, j = -1;
     9     p[i] = j;
    10     while(i < k)
    11     {
    12         if(j == -1 || b[i] == b[j])
    13         {
    14             i++; j++;
    15             p[i] = j;
    16         }
    17         else
    18             j = p[j];
    19     }
    20 }
    21 int main()
    22 {
    23     int t;
    24     scanf("%d", &t);
    25     while(t--)
    26     {
    27         int i;
    28         scanf("%s", a);
    29         lena = strlen(a);    
    30         for(i = 0; i < lena; i++)
    31         {
    32             if(a[i] == '.')
    33             {
    34                 i += 1;
    35                 break;
    36             }
    37         }
    38     //    printf("%d
    ", i);
    39         k = 0;
    40         for(; i < lena; i++)
    41             b[k++] = a[i];
    42     //        printf("%d
    ", k);
    43         Getp();
    44         printf("%d ", k - p[k]);
    45         for(i = 0; i < k - p[k]; i++)
    46             printf("%c", b[i]);
    47         printf(" ");
    48         printf("%d
    ", k/(k-p[k])); 
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    windows任务计划
    PHP创建多级文件夹
    js正则表达式(不断总结中....)
    js随机改变背景颜色
    提高PHP代码质量36计
    PHP中使用Filter进行数据安全过滤
    CSS颜色代码大全
    正则表达式的修饰符
    创建索引视图
    读取xml中的所有文件名
  • 原文地址:https://www.cnblogs.com/soTired/p/4713840.html
Copyright © 2011-2022 走看看