Pagini recente » Cod sursa (job #2942166) | Cod sursa (job #1453313) | Cod sursa (job #578976) | Cod sursa (job #2308532) | Cod sursa (job #733044)
Cod sursa(job #733044)
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
int baza;
class huge
{
public: unsigned short v[100001];
int i,aux;
huge()
{
for(i=0;i<=100000;i++)
v[i]=0;
}
inline void operator = (huge a)
{
memcpy (v,a.v,sizeof (a.v));
}
inline void operator = (int a)
{
memset(v,0,sizeof(v));
for ( ;a>0;a=a/baza)
v[++v[0]]=a%baza;
}
inline huge operator + (huge &a) const
{
huge b;
int i,t;
t=0;
for(i=1;i<=a.v[0]||i<=v[0]||t;i++,t=t/baza) {
t=t+a.v[i]+v[i];
b.v[i]=t%baza;
}
b.v[0]=i-1;
return b;
}
inline huge operator * (huge &a) const
{
int i,j,t;
huge c;
t=0;
c.v[0]=a.v[0]+v[0]-1;
for(i=1;i<=a.v[0]+v[0];i++)
c.v[i]=0;
for(i=1;i<=a.v[0];i++)
for(j=1;j<=v[0];j++)
c.v[i+j-1]=c.v[i+j-1]+(1LL*a.v[i]*v[j]);
for(i=1;i<=c.v[0];i++) {
t=(c.v[i]+=t)/baza;
c.v[i]%=baza;
}
if(t)
c.v[++c.v[0]]=t;
return c;
}
inline huge operator / (int b) const
{
huge a;
memcpy (a.v,v,sizeof(v));
int i,t;
t=0;
for (i=a.v[0];i>=1;i--,t=t%b) {
t=t*baza+a.v[i];
a.v[i]=t/b;
}
for ( ;a.v[0]>1&&!a.v[a.v[0]];a.v[0]--);
return a;
}
inline long long operator % (long long b) const
{
int i;
long long t;
t=0;
for (i=v[0];i>=1;i--)
t=(t*10+v[i])%b;
return t;
}
friend ifstream& operator >> (ifstream &f, huge &a)
{
int l;
char c[301];
memset(c,0,sizeof(0));
f>>c;
l=strlen(c);
for (int i=l-1; i>=0; i=i-4) {
a.v[++a.v[0]]=c[i]-48;
if(i>0)
a.v[a.v[0]]=a.v[a.v[0]]+((c[i-1]-48)*10);
if(i>1)
a.v[a.v[0]]=a.v[a.v[0]]+((c[i-2]-48)*100);
if(i>2)
a.v[a.v[0]]=a.v[a.v[0]]+((c[i-3]-48)*1000);
}
return f;
}
friend ofstream& operator << (ofstream &g, huge &a)
{
int x,i;
g<<a.v[a.v[0]];
for (i=a.v[0]-1;i>=1;i--) {
if (a.v[i]==0) {
for (x=1;x<baza;x=x*10)
g<<"0";
continue;
}
for (x=a.v[i]*10;x<baza;x=x*10)
g<<"0";
g<<a.v[i];
}
return g;
}
};
huge n,dd;
int d;
int main ()
{
baza=10000;
ifstream f("next.in");
ofstream g("next.out");
f>>n>>d;
f.close();
dd=d;
if(n%d!=0) {
n=n/d;
n=n*dd;
n=n+dd;
}
g<<n;
g.close();
return 0;
}