1040 - 幂字符串

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

给你一个字符串,请你判断将此字符串转化成a^n形式的最大的n是多少。
例如:abcd=(abcd)^1,则n=1;
         aaaa=a^4,则n=4;
         ababab=(ab)^3,则n=3。

题目输入

输入包含多组测试数据。每组输入为一个字符串,长度不超过100,其中不包含空格等空白符。当输入为一个“.”时,输入结束。

题目输出

对于每组输入,输出将此字符串转化成a^n形式的最大的n。

输入/输出样例

输入格式

abcd
aaaa
ababab
.

输出格式

1
4
3

C语言解答

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char word[110];
    while(scanf("%s",word)==1)
    {

        int len=strlen(word);
        int i,j;
        if(word[0]=='.'&&len==1)
        break;
        for(i=1; i<=len; i++)
            if(len%i==0)
            {
                int ok=1;
                for(j=i; j<len; j++)
                    if(word[j]!=word[j%i])
                    {
                        ok=0;
                        break;
                    }
                if(ok)
                {
                    break;
                }
            }printf("%d\n",len/i);
    }

    return 0;
}

C++解答

#include<cstdio>
#include<string>
using namespace std;

char s[101];

int main()
{
	string a,b,c;
	int i,t;
	while(scanf("%s",s)!=EOF)
	{
		a=s;
		if(a==".")
			break;
		b="";
		for(i=0;;i++)
		{
			b+=a[i];
			if(a.size()%b.size())
				continue;
			c="";
			t=0;
			while(c.size()<a.size())
			{
				c+=b;
				t++;
			}
			if(c==a)
			{
				printf("%d\n",t);
				break;
			}
		}
	}
	return 0;
}

Java解答

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (true) {
			String input = sc.nextLine();
			if (input.equals(".")) {
				break;
			}
			System.out.println(foo(input));
		}
		sc.close();
	}

	private static int foo(String input) {
		for (int i = 1; i <= input.length(); i++) {
			if (input.length() % i == 0) {
				String unit = input.substring(0, i);
				boolean find = true;
				for (int j = 0; j < input.length(); j += i) {
					String temp = input.substring(j, j + unit.length());
					if (!temp.equals(unit)) {
						find = false;
						break;
					}
				}
				if (find) {
					return input.length() / unit.length();
				}
			}
		}
		return 1;
	}

}