Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:无语了,WA了N次,不知道什么原因,测试很多情况都过了啊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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator