zoukankan      html  css  js  c++  java
  • hpuoj--1695--一道签到题(KMP)

    1695: 一道签到题

    时间限制: 2 Sec  内存限制: 128 MB
    提交: 72  解决: 36
    [提交][状态][讨论版]

    题目描述

    我想说这是一道签到题,意思就是本次测试中最水的一道,不过我这样说你真的愿意相信我吗?哈哈,题目是这样的给你一下小数,然后请告诉我分别告诉我这个小数的循环节的循环次数、循环节以及循环节长度

    输入

    输入包括多组测试数据每组测试数据1行,包括一个小数,小数的长度不超过200,小数大于0小于100

    输出

    分别输出这个小数的循环节的长度、循环节以及循环次数,中间以一个空格间隔

    样例输入

    8.69876987698769870.6665.1

    样例输出

    4 6987 41 6 31 1 1

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    char str[100100];
    int p[100100];
    void getp()
    {
    	int i=0,j=-1;
    	p[0]=-1;
    	int len=strlen(str);
    	while(i<len)
    	if(j==-1||str[i]==str[j])
    	{
    		i++,j++;
    		p[i]=j;
    	}
    	else
    	j=p[j];
    }
    int main()
    {
    	int n;
    	while(scanf("%d.%s",&n,str)!=EOF)
    	{
    		int len=strlen(str);
    		getp();
    		printf("%d ",len-p[len]);
    		for(int i=0;i<len-p[len];i++)
    		printf("%c",str[i]);
    		printf(" %d
    ",len/(len-p[len])); 
    		memset(str,'',sizeof(str));
    	}
    	return 0;
    } 


  • 相关阅读:
    oo第八次作业--5,6,7次作业总结
    OO前三次作业总结
    软工总结
    黄衫感想博客
    软工结对编程博客
    软工第一次阅读
    软工第0次作业
    OO第四次博客
    OO第三次博客
    OO第二次博客
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273607.html
Copyright © 2011-2022 走看看