| ||||||||||
| 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 | |||||||||
高精度二分贴代码#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
using namespace std;
struct T_bignum
{
int l,num[2000];
inline int& operator [](int k){return num[k];}
inline int operator [](int k)const{return num[k];}
inline T_bignum operator *(const T_bignum &tn)
{
T_bignum ans;
if (l>0 && tn.l>0)ans.l=l+tn.l-1;
int i,j,k;
for (i=1;i<=l;i++)
for (j=1;j<=tn.l;j++)
{
k=i+j-1;
ans[k]+=num[i]*tn[j];
ans[k+1]+=ans[k]/10;
ans[k]%=10;
if (ans[k+1]>0 && k+1>ans.l)ans.l=k+1;
}
while (ans[ans.l]>10)
{
ans[ans.l+1]+=ans[ans.l]/10;
ans[ans.l]%=10;
ans.l++;
}
return ans;
}
inline int operator ==(const T_bignum &tn)
{
if (l!=tn.l)return 0;
for (int i=1;i<=l;i++)
if (num[i]!=tn[i])return 0;
return 1;
}
inline int operator <(const T_bignum &tn)
{
if (l<tn.l)return 1;
if (l>tn.l)return 0;
for (int i=l;i>=1;i--)
{
if (num[i]<tn[i])return 1;
if (num[i]>tn[i])return 0;
}
return 0;
}
T_bignum()
{
memset(num,0,sizeof(num));
l=0;
}
void init()
{
memset(num,0,sizeof(num));
l=0;
}
inline void read()
{
char c[200];
scanf("%s",c+1);
init();
do
{
l++;
num[l]=c[l]-'0';
}while (c[l+1]>0);
for (int i=1;i+i<=l;i++)
swap(num[i],num[l-i+1]);
while (num[l]==0)l--;
}
inline void print()
{
for (int i=l;i>=1;i--)
printf("%d",num[i]);
}
inline T_bignum &operator =(int n)
{
init();
while (n>0)
{
num[++l]=n%10;
n/=10;
}
return *this;
}
}p;
inline T_bignum times(int k,int n)
{
T_bignum ans,tim;
ans=1;
tim=k;
while (n>0)
{
if (n & 1)ans=ans*tim;
n>>=1;
tim=tim*tim;
}
return ans;
}
inline int bin(int n)
{
int b,e,k;
T_bignum tt;
b=1;e=1000000000;k=(b+e)>>1;
while (b<e)
{
tt=times(k,n);
if (tt<p)b=k;
else
{
if (p<tt)e=k-1;
else return k;
}
k=(b+e+1)>>1;
}
return k;
}
int main()
{
T_bignum a,b;
int n;
while (scanf("%d",&n)!=EOF)
{
p.read();
printf("%d\n",bin(n));
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator