Pagini recente » Cod sursa (job #673453) | Cod sursa (job #2725670) | Cod sursa (job #1371418) | Cod sursa (job #1548259) | Cod sursa (job #1716257)
#include<iostream>
#include<fstream>
#include<vector>
#include<cstring>
using namespace std;
typedef vector<short int> bigint;
istream &operator >>(istream &f,bigint &x)
{
x.clear();
string s;
f>>s;
for(int i=0;i<s.size();i++)
x.push_back(s[i]-'0');
return f;
}
ostream &operator << (ostream &g, bigint &x)
{
for(int i=0;i<x.size();i++)
g<<x[i];
return g;
}
long long rest;
bigint operator /(const bigint &x, const long long &nr)
{
rest=0;
bigint sol;
int ok=0;
for(int i=0;i<x.size();i++)
{
rest=(long long) rest*10+x[i];
if(rest<nr)
{
if(ok==1)
sol.push_back(0);
}
else
{
sol.push_back(rest/nr);
rest=rest-((rest/nr)*nr);
ok=1;
}
}
return sol;
}
bigint operator * (const bigint &x , const long long &nr)
{
bigint sol;
long long t=0;
for(int i=x.size()-1;i>=0;i--)
{
long long p =(long long) x[i]*nr +t;
sol.insert(sol.begin(),1,p%10);
t=p/10;
}
while(t)
{
sol.insert(sol.begin(),1,t%10);
t/=10;
}
return sol;
}
int main()
{
bigint x,x2,sol;
long long d;
ifstream cin("next.in");
ofstream cout("next.out");
cin>>x;
cin>>d;
x2=x/d;
//cout<<x2<<"\n";
if(rest==0)
{
cout<<x;
}
else
{
int t=0;
for(int i=x2.size()-1;i>=0;i--)
{
if(x2[i]!=9)
{
t=1;
x2[i]++;
break;
}
else
{
x2[i]=0;
}
}
if(t==0)
x2.insert(x2.begin(),1,1);
// cout<<x2<<"\n";
sol=x2*d;
cout<<sol;
}
return 0;
}