夏洛克与野兽 C

sherlock and the beast in C

我在解决这个问题时遇到问题 https://www.hackerrank.com/challenges/sherlock-and-the-beast/ 并且只能解决 15 个测试用例中的 14 个。我剩下测试用例 #14,如果有人可以帮助我。

这是我的代码:

int main()
{
int t,i,j,val1=0,val2=0,a0,k,z,five=0,three=0,rem=0,div=0;
int a=5,b=3;

scanf("%d",&t);
for(int a0 = 0; a0 < t; a0++){
    int n; 
    scanf("%d",&n);
    rem=n%3;
    div=n/3;
    if(n>2)
    {
    if(n==4)
        {printf("-1\n");}
    if(rem==2){
        three=1;
        five=div-1;
    }
    else if(rem==1){
        three=2;
        five=div-3;
    }
    else if(rem==0)
    {
        three=0;
        five=div;
    }



    for(k=0;k<five;k++){printf("555");}
    for(z=0;z<three;z++){printf("33333");}

}
    else {printf("-1");}
    printf("\n");
}
 return 0;
}

测试用例: 10 1个 2个 3个 4个 5个 6个 7 8个 9 10

预期输出:
-1 -1 555 -1 33333 555555 -1 55533333 555555555 3333333333

您走在正确的轨道上,但需要做更多的概括。而不是使用"n",需要引入一个flag。

for(int a0 = 0; a0 < t; a0++)
{   FLAG=1;
    int n; 
    scanf("%d",&n);
    rem=n%3;
    div=n/3;
    if(rem==2)
        {
            if(div<1)
                FLAG=0;
            five=div-1;
            three=1;
        }
        else if(rem==1)
        {

            if(div<3)
                FLAG=0;
            five=div-3;
            three=2;
        }
        else if(rem==0)
        {
            three=0;
            five=div;
        }

    if(FLAG==1)
    {
            for(k=0;k<five;k++){printf("555");}
            for(z=0;z<three;z++){printf("33333");}
    }
    if(FLAG==0)
        {printf("-1");}
    printf("\n");
}
return 0;
}

希望这会有所帮助!