1. 程式人生 > >訓練3+ H-Palindrome Number

訓練3+ H-Palindrome Number

最近智商下降,這題敲出來之後總是在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;
}