| ||||||||||
| 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 | |||||||||
偶的程序......In Reply To:Re:WA WA WA ......WHY..........55555 Posted by:ync at 2005-07-31 15:13:02 #include "iostream.h"
#include "math.h"
#include "fstream.h"
long int nn,i;
__int64 second[100],bs[100],first[100],bf[100],k;
__int64 check(__int64 k,long int o)
{
long int l=0;
__int64 w[100];
while (k>0)
{w[++l]=k%10; k/=10;}
o=l-o+1;
return w[o];
}
__int64 change (__int64 k,long int o)
{
__int64 kk=k; kk=kk*kk;
long int l=0;
__int64 w[100];
while(kk>0)
{w[++l]=kk%10; kk/=10;}
o=l-o+1;
return w[o];
}
int count(__int64 n,__int64& k1,__int64& k2)
{
long int i; __int64 m;
m=n;
for (i=1;i<=9;i++)
if (m>first[i]) m-=first[i];
else
{
if (m%i==0)
{k1=m/i+bf[i]-1; k1=check(k1,i);}
else
{k1=m/i+bf[i]; m%=i; k1=check(k1,m);}
m=0; break;
}
m=n;
for (i=1;i<=18;i++)
if (m>second[i]) m-=second[i];
else
{
if (m%i==0)
{k2=m/i+bs[i]-1; k2=change(k2,i);}
else
{k2=m/i+bs[i]; m%=i; k2=change(k2,m);}
m=0; break;
}
return 0;
}
int main()
{
bf[1]=1; first[1]=9; k=9;
for (i=2;i<=9;i++)
{bf[i]=bf[i-1]*10; k*=10; first[i]=k*i;}
bf[10]=bf[9]*10;
bs[1]=1; second[1]=3; k=3; __int64 o=10;
for (i=2;i<=18;i++)
{bs[i]=k+1; o*=10; k=sqrt(o-1); second[i]=i*(k-bs[i]+1);}
bs[19]=k+1;
while(true)
// for (nn=1;nn<=985000;nn++)
{
cin>>nn;
if (nn==0) return 0;
__int64 n=nn;
__int64 k1,k2,kk1,kk2;
long int ans;
count(n,k1,k2); count(n+1,kk1,kk2);
if (kk1+kk2>9) ans=(k1+k2+1)%10;
else
{
if (kk1+kk2==9)
{
n++;
do
{n++; count(n,kk1,kk2);}
while(kk1+kk2==9);
if (kk1+kk2>9) ans=(k1+k2+1)%10;
else ans=(k1+k2)%10;
}
else ans=(k1+k2)%10;
}
output<<ans<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator