1040 - 幂字符串
时间限制 : 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; } }