All pastes #290267 Raw Edit

Mine

public text v1 · immutable
#290267 ·published 2006-12-23 21:05 UTC
rendered paste body
#include<iostream>
#include<stdio.h>
#include<math.h>

using namespace std;
long long a[200001]={1,3,11,41};
long long val[200001]={1,3,11,41};
int r[200001]={1,1,2,2};
long long x;
long double y,b[200001]={1.,3.,11.,41.};
int lc;

int lcyfr(long long n)
{
    int i;
    for(i=0;n>0;i++)
            n/=10;
    return i;
}
int reszta(int n)
{
    int i,val=1;
    for(i=1;i<=n;i++)
       val*=10;  
 //   cout<<"\nn= "<<n<<"  val= "<<val<<endl;
    return val;
} 

void tablicuj()
{
     int fix=3;
	
    for(int i=4;i<200001;i++)
    {
            r[i]=r[i-1];
            /*if(i>33)
              x=4*a[i-1]-a[i-2]/reszta(r[i-1]-r[i-2]);
            else*/
              x=4*a[i-1]-a[i-2];
            if(i<35)
            {  
			if(8==fix)
			{
				r[i]++;
				fix=1;
			}
			else
			{
				if(fix%2)
				{
					r[i]++;
				}
			}fix++;
            }
            else
            {
                fix=x/1000000000000000000ll;
                if(fix>0)
                r[i]++;
            }
            
					
//            cout<<"\n"<<x<<endl;
            lc=lcyfr(x);
            if(lc>10)
            {
                val[i]=x/reszta(lc-10);
                if(x>=1000000000000000000ll)
                {
                   a[i]=x/10;
                   a[i-1]=a[i-1]/10;
 //                  cout<<"a["<<i<<"]"<<"= "<<a[i]<<endl;
                }
                else
                {
                    a[i]=x;
                }
//                cout<<val[i]<<endl;
            }
            else
            {
                val[i]=a[i]=x;
//                cout<<val[i]<<endl;
            }
            
    }
}

void tablicuj2()
{
	
    for(int i=4;i<200001;i++)
    {

            y=4*b[i-1]-b[i-2];
            lc=log10(y)+1;
            if(lc>10)
            {
                val[i]=y/reszta(lc-10);
                if(x>=2000000000000000000ll)
                {
                   b[i]=y/10;
                   b[i-1]=b[i-1]/10;
                }
                else
                {
                    b[i]=y;
                }
            }
            else
            {
                val[i]=b[i]=y;
            }
            
    }
}
//1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514     

int main()
{	
    int C,F;
	tablicuj();
	tablicuj2();
	
//	for(int i=30;i<50;i++)
//	cout<<r[i]<<' ';
//	cout<<endl;
	
	scanf("%d",&C);
	while(C--)
	{
       scanf("%d",&F);
       cout<<r[F]<<' '<<val[F]<<endl;
//       printf("%d %lld\n",r[F],val[F]);
    }
    
//    getchar();        
//	getchar();
	return 0;
}