算法竞赛入门经典题解——第三章 3-4 周期串UVa455

思路:遍历可能的周期,比较s[k]与s[k%i](其中i为周期)

#include <stdio.h>
#include <stdlib.h>
#include<string.h>

int main()
{
    int T;
    char s[90];
    scanf("%d",&T);
    while(T--){
        scanf("%s",s);
        int len,i;
        len=strlen(s);
        for(i=1;i<=len;i++){
            if(len%i==0)
            {
                int k;
                int test=1;
                for(k=0;k<len;k++){
                    if(s[k]!=s[k%i])
                    {
                        test=0;
                        break;
                    }
                }
                if(test){
                    printf("%d\n",i);
                    break;
                }
            }
        }
        if(T) printf("\n");
    }
    return 0;
}

原文地址:https://www.cnblogs.com/loganlzj/p/9354010.html

时间: 2024-10-14 10:03:37

算法竞赛入门经典题解——第三章 3-4 周期串UVa455的相关文章

《算法竞赛入门经典》第三章 3.1

程序 3-1 #include<stdio.h>#define MAXN 100 + 10int a[MAXN];int main(){ int i, x, n = 0; while(scanf("%d, &x") == 1) a[n++] = x; for(i = n-1; i>=1; i--) { printf("%d ", a[i]); } printf("%d\n", a[0]); return 0;}

《刘汝佳算法竞赛入门经典》第五章 数论

Skew Binary 斜二进制 斜二进制的每位为0, 或 1, 最低位可以为2. 第k位的...代表 2k+1 -1,给出一个斜二进制数,把他转换成十进制数.正常模拟就好 1 #include <cstdio> 2 #include <cstring> 3 char A[1000]; 4 5 int main() { 6 while (scanf("%s", A) != EOF) { 7 if (A[0] == '0') break; 8 int len =

《刘汝佳算法竞赛入门经典》第五章 简单几何计算

The Other Two Trees 另两棵树 没看懂题目,搜了下题解,都是直接给出了简化后的题意和解法...自己再读读原题意吧

算法竞赛入门经典(第六章)

习题6-1,UVa673,Time:11.1 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<string> 6 #include <stack> 7 using namespace std; 8 int main() { 9 int Case; 10 string str; 11 bool flag

《刘汝佳算法竞赛入门经典》第五章 高精度

Integer Inquiry 输入几行大整数, 求他们的和吗以0表示输入结束

《刘汝佳算法竞赛入门经典》第五章 排序检索

Master-MindHints

《刘汝佳算法竞赛入门经典》 第五章 字符串

Palindromes 几个if语句判断一下就好了

算法竞赛入门经典_第七章 暴力求解法_7.2枚举排列:生成1~n的排列

版权所有,欢迎转载,转载请注明出处,谢谢 生成1~n的排列 递归思想:先输出所有以1开头的排列(这一步是递归调用),然后输出以2开头的排列(这一步是递归调用),接着是以3开头的排列······最后才是以n开头的排列. //vs2012测试代码 #include<iostream> using namespace std; void print_permutation(int n, int* A, int cur) { if(cur==n)//递归边界 { for(int i=0; i<n

【算法竞赛入门经典】【第三章】课后习题(第二部分)

自从蓝桥杯之后,都没写博客了.今天将之前第三章还差的一部分习题答案补上. 3-4整数相加 这一题题目有提示,说选择合适的输入方式,即可简化问题.刚开始没想到cin,结果还用字符串来做,多亏别人提醒我一下,我才想起cin.惭愧啊.. #include <iostream> using namespace std; int main() { int a,b; char op; while(cin>>a>>op>>b){ switch(op){ case '+':