• UVA


    Description

    Download as PDF

    Problem D: Power Strings

    Given two strings a and b we define a*b to be their concatenation. For example, ifa = "abc" and b = "def" then a*b = "abcdef". If we think of concatenation as multiplication, exponentiation by a non-negative integer is defined in the normal way:a^0 = "" (the empty string) and a^(n+1) = a*(a^n).

    Each test case is a line of input representing s, a string of printable characters. For eachs you should print the largest n such that s = a^n for some stringa. The length of s will be at least 1 and will not exceed 1 million characters. A line containing a period follows the last test case.

    Sample Input

    abcd
    aaaa
    ababab
    .
    

    Output for Sample Input

    1
    4
    3
    

    题意:求循环节

    思路:KMP模板求循环节

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    const int MAXN = 1000000;
    
    char str[MAXN];
    int next[MAXN];
    
    int main() {
    	while (scanf("%s", str) != EOF && str[0] != '.') {
    		int len = strlen(str);
    		int i = 0, j = -1;
    		next[0] = -1;
    		while (i < len) {
    			if (j == -1 || str[i] == str[j]) {
    				i++, j++;
    				next[i] = j;
    			}
    			else j = next[j];
    		}
    		printf("%d
    ", len/(len-next[len]));
    	}
    	return 0;
    }



  • 相关阅读:
    zabbix server监控本机agent
    虚拟机添加配置双网卡linux
    linux改变默认运行级别
    linux重置root密码
    vi文本编辑器
    centos7 mysql安装和基本操作yum安装
    安装wordpress个人网站
    httpd安装与配置(centos7) 2
    httpd安装与配置(centos7)
    Mac升级Python3
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5364095.html
Copyright © 2020-2023  润新知