hpu 1695 问题 A 一道签到题(KMP算法的考察)
来源:互联网 发布:喷绘用什么软件做 编辑:程序博客网 时间:2024/05/21 17:24
本题链接:点击打开链接
本题题意:
输入一个长度不超过200,数值不超过100的循环小数,求出小数点后的循环节,循环节长度,循环次数。
解题思路:
本题为KMP算法的较全面的考察,首先将小数点后的数存放到一个数组中,并求出next数组,然后,由KMP算法可知,循环节长度为:【k-next[k]】;循环次数为【k/(k-next[k])】,知此,循环节也不难求了,按循环长度直接输出即可。
参考代码:
#include<stdio.h>#include<string.h>char str[300];char buf[220];int next[220];void getnext(int l){int i=0,j=-1;next[i]=j;while(i<l){if(j==-1||buf[i]==buf[j]){i++;j++;next[i]=j;}elsej=next[j];}}int main(){while(scanf("%s",str)!=EOF){int i=0;while(str[i]!='.')i++;int len=strlen(str);int k=0;for(int j=i+1;j<len;j++)buf[k++]=str[j];getnext(k);printf("%d ",k-next[k]);//循环节长度 for(int i=0;i<k-next[k];i++)printf("%c",buf[i]);printf(" %d\n",k/(k-next[k]));//循环次数 }return 0;}
0 0
- hpu 1695 问题 A 一道签到题(KMP算法的考察)
- hpu 1695 一道签到题
- hpuoj--1695--一道签到题(KMP)
- 周赛-一道签到题(kmp)
- hpuoj1695 一道签到题【KMP】
- HPU-1411: QAQ & ORZ 的签到题 [水题]
- HPU 弱校联萌3 【1411】 QAQ & ORZ 的签到题
- 一道典型的面向对象考察题
- qduoj 一道非常简单的签到题
- cfenglv的一道简单签到题 QDU
- 一道签到题
- hpu1695 一道签到题
- 一道签到题
- 一道签到题
- 想到一道考察C功底的笔试题
- js数组方法的一道笔试题考察点详解
- 问题A.签到题 题目详解
- 来一道水题 KMP算法---HDU2087
- Hadoop1.2.1 完全分布式集群搭建实操笔记
- CodeForces 545B
- UIButton
- HTTP协议-无状态性
- Android之线程池深度剖析
- hpu 1695 问题 A 一道签到题(KMP算法的考察)
- 【git】git bash 启动默认路径
- 并查集之找祖先的模板
- Exception in thread "main" java.lang.NoClassDefFoundError错误解决
- C语言5种程序语句(2)——函数语句
- linux下man时括号里的数字意义
- poj 2229 Ultra-QuickSort (归并排序求逆序数对|| 树状数组)
- Java实现多线程经典问题:使用三个线程实现输出ABCABC循环
- iOS多线程与网络开发之使用POST上传JSON数据 & 多值参数