Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:无语了,WA了N次,不知道什么原因,测试很多情况都过了啊

Posted by 1207020203 at 2013-05-15 01:25:14 on Problem 2402
In Reply To:无语了,WA了N次,不知道什么原因,测试很多情况都过了啊 Posted by:lironghua at 2008-04-26 22:50:43
> 大牛们,帮帮忙,测试了很多数据都没有问题,不知道为什么WA,还有就是用G++时编译出错,也不知道什么原因,用C++就WA
> 代码如下:
> #include <iostream>
> #include <cstdio>
> 
> using namespace std;
> 
> __int64 s[20] = {0,9, 18, 108, 198, 1098, 1998, 10998, 19998, 109998, 199998, 
> 1099998, 1999998, 10999998, 19999998, 109999998, 
> 199999998, 1099999998, 1999999998, 10999999998
> };
> 
> void inttochar (char a[], __int64 x)
> {
> 	int i,t;
> 	for (i = 0; ; i++)
> 	{
> 		t = x % 10;
> 		a[i] = t + '0';
> 		x = x / 10;
> 		if (x == 0)
> 			break;
> 	}
> 	a[i + 1] = '\0';
> }
> 
> int main ()
> {
> //	freopen ("2402.txt","r",stdin);
> 	__int64 k,t,tmp;
> 	int i,j,r,mid;
> 	char a[22];
> 	while (1)
> 	{
> 		scanf ("%I64d",&k);
> 		if (k == 0)
> 			break;
> 		for (i = 1; ; i++)
> 			if (k < s[i])
> 				break;
> 		if (i == 1)
> 			printf ("%I64d\n",k);
> 		else
> 		{
> 			t = k - s[i - 1];
> 			if (t == 0)	
> 			{
> 				for (j = 0; j < i - 1; j++)
> 						printf ("9");
> 					printf ("\n");
> 			}
> 			else
> 			{
> 				if (i % 2 == 0)
> 				{
> 					r = i / 2;
> 					switch (r)
> 					{
> 					case 1:
> 						printf ("%I64d",t);
> 						printf ("%I64d",t);
> 						break;
> 					case 2:
> 						printf ("%I64d",t + 9);
> 						inttochar (a,t + 9);
> 						printf ("%s",a);
> 						break;
> 					case 3:
> 						printf ("%I64d",t + 99);
> 						inttochar (a,t + 99);
> 						printf ("%s",a);
> 						break;
> 					case 4:
> 						printf ("%I64d",t + 999);
> 						inttochar (a,t + 999);
> 						printf ("%s",a);
> 						break;
> 					case 5:
> 						printf ("%I64d",t + 9999);
> 						inttochar (a,t + 9999);
> 						printf ("%s",a);
> 						break;
> 					case 6:
> 						printf ("%I64d",t + 99999);
> 						inttochar (a,t + 99999);
> 						printf ("%s",a);
> 						break;
> 					case 7:
> 						printf ("%I64d",t + 999999);
> 						inttochar (a,t + 999999);
> 						printf ("%s",a);
> 						break;
> 					case 8:
> 						printf ("%I64d",t + 9999999);
> 						inttochar (a,t + 9999999);
> 						printf ("%s",a);
> 						break;
> 					case 9:
> 						printf ("%I64d",t + 99999999);
> 						inttochar (a,t + 99999999);
> 						printf ("%s",a);
> 						break;
> 					case 10:
> 						printf ("%I64d",t + 999999999);
> 						inttochar (a,t + 999999999);
> 						printf ("%s",a);
> 						break;
> 					}
> 					printf ("\n");
> 				}
> 				else
> 				{
> 					r = i / 2;
> 					mid = (t - 1) % 10;
> 					tmp = (t - 1) / 10 + 1;
> 					switch (r)
> 					{
> 					case 1:
> 						printf ("%I64d",tmp);
> 						printf ("%d",mid);
> 						printf ("%I64d",tmp);
> 						break;
> 					case 2:
> 						printf ("%I64d",tmp + 9);
> 						printf ("%d",mid);
> 						inttochar (a,tmp + 9);
> 						printf ("%s",a);
> 						break;
> 					case 3:
> 						printf ("%I64d",tmp + 99);
> 						printf ("%d",mid);
> 						inttochar (a,tmp + 99);
> 						printf ("%s",a);
> 						break;
> 					case 4:
> 						printf ("%I64d",tmp + 999);
> 						printf ("%d",mid);
> 						inttochar (a,tmp + 999);
> 						printf ("%s",a);
> 						break;
> 					case 5:
> 						printf ("%I64d",tmp + 9999);
> 						printf ("%d",mid);
> 						inttochar (a,tmp + 9999);
> 						printf ("%s",a);
> 						break;
> 					case 6:
> 						printf ("%I64d",tmp + 99999);
> 						printf ("%d",mid);
> 						inttochar (a,99999);
> 						printf ("%s",a);
> 						break;
> 					case 7:
> 						printf ("%I64d",tmp + 999999);
> 						printf ("%d",mid);
> 						inttochar (a,tmp + 999999);
> 						printf ("%s",a);
> 						break;
> 					case 8:
> 						printf ("%I64d",tmp + 9999999);
> 						printf ("%d",mid);
> 						inttochar (a,tmp + 9999999);
> 						printf ("%s",a);
> 						break;
> 					case 9:
> 						printf ("%I64d",tmp + 99999999);
> 						printf ("%d",mid);
> 						inttochar (a,tmp + 99999999);
> 						printf ("%s",a);
> 						break;
> 					case 10:
> 						printf ("%I64d",tmp + 999999999);
> 						printf ("%d",mid);
> 						inttochar (a,tmp + 999999999);
> 						printf ("%s",a);
> 						break;
> 					}
> 					printf ("\n");
> 				}
> 			}
> 		}
> 	}
> 	return 0;
> }

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator