我在解决这个问题时遇到了问题https://www.hackerrank.com/challenges/sherlock-and-the-beast/并且能够解决15个中的14个测试用例。如果有人可以帮我解决这个问题,我会留下测试用例#14。 / p>
这是我的代码:
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 五 6 7 8 9 10
预期产出:
-1
-1
555
-1
33333
555555
-1
55533333
555555555
3333333333
答案 0 :(得分:2)
你走在正确的轨道上但需要进行更多的概括。不需要使用“n”,而是需要引入标志。
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;
}
希望这会有所帮助!