訓練3+ H-Palindrome Number
阿新 • • 發佈:2019-01-22
最近智商下降,這題敲出來之後總是在test 2上面wa,連累隊友幫我找了很長時間的bug。
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<algorithm>
using namespace std;
int num[1000100];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,s;
memset(num,0,sizeof(num));
scanf("%d%d",&n,&s);
if(s>n*9 || (n>1 && s==1))//!!這裡是s>n*9,昨晚寫成了s>=n*9,
//自己輸入資料測試時候居然沒有測全9的,後來隨便輸入資料測試的時候測了才發現。
{
printf("-1\n");
continue;
}
if(n==1 && s==1)
{
printf("1\n");
continue;
}
int i,j,sum=0;
int p=n;
for(i=0;i<1000100 && s;i++)
{
if(p>1)
for(j=9;j>=0;j--)
{
if(s<2*j)
continue;
s-=2*j;
num[i]=j;
sum++;
p-=2;
break;
}
else
{
num[i]=s;
sum++;
break;
}
}
if(sum*2<=n)
{
for(i=0;i<sum;i++)
{
printf("%d",num[i]);
}
int t=n-2*sum;
for(i=0;i<t;i++)
printf("0");
for(i=sum-1;i>=0;i--)
printf("%d",num[i]);
printf("\n");
continue;
}
if((sum*2-1)==n)
{
for(i=0;i<sum;i++)
printf("%d",num[i]);
for(i=sum-2;i>=0;i--)
printf("%d",num[i]);
printf("\n");
continue;
}
else
printf("-1\n");
}
return 0;
}