求大神看看,为什么UVa455我为什么总是WA啊。Debug 也找不到错误。

求大神看看,为什么UVa455 periodic string 我为什么总是WA啊。Debug 也找不到错误。

我的程序是这样的:

#include
#include
#include
#include

using namespace std;

int primes[26] = {1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 59, 61, 67, 71, 73, 79, 83, 89};

int isPrime(int x)
{
for(int i = 0; i < 26; i++){
if(primes[i] == x){
return 1;
}
}
return 0;
}

int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int n = 0;
scanf("%d", &n);
int answers[n];
for(int t = 0; t < n; t ++){
char input[90];
scanf("%s", input);
int length = strlen(input);
if(isPrime(length)){
answers[t] = length;
continue;
}
for(int i = 1; i <= length; i++){
if(length % i == 0){
int j = i;
for(; j < length; j++){
if(input[j] != input[j % i]){
break;
}
}
if( j == length){
answers[t] = i;
break;
}
}
}
}
int t = 0;
for(; t < n - 1; t ++){
printf("%d\n\n", answers[t]);
}
printf("%d\n", answers[t]);
return 0;
}

代码帮你整理一下,太乱了

 #include 
#include 
#include 
#include
using namespace std;
int primes[26] = {1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 59, 61, 67, 71, 73, 79, 83, 89};
int isPrime(int x)
{
    for(int i = 0; i < 26; i++){
        if(primes[i] == x){
            return 1;
        }
    }
    return 0;
}

int main()
{
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    int n = 0;
    scanf("%d", &n);
    int answers[n];
    for(int t = 0; t < n; t ++){
        char input[90];
        scanf("%s", input);
        int length = strlen(input);
        if(isPrime(length)){
            answers[t] = length;
            continue;
        }
        for(int i = 1; i <= length; i++){
            if(length % i == 0){
                int j = i;
                for(; j < length; j++){
                    if(input[j] != input[j % i]){
                        break;
                    }
                }
                if( j == length){
                    answers[t] = i;
                    break;
                }
            }
        }
    }
    int t = 0;
    for(; t < n - 1; t ++){
        printf("%d\n\n", answers[t]);
    }
    printf("%d\n", answers[t]);
    return 0;
}

@PB人生
额,好吧谢谢。但是你知道我为什么不对吗? 谢谢了:)