Pagini recente » Cod sursa (job #2867481) | Cod sursa (job #2382592) | Cod sursa (job #1096353) | Cod sursa (job #3190529) | Cod sursa (job #1593707)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
const int MAXDIGITS=105;
char s[MAXDIGITS];
struct NumarMare
{
int v[MAXDIGITS];
NumarMare()
{
for(int i=0;i<MAXDIGITS;i++)
v[i]=0;
}
NumarMare(long long x)
{
for(int i=0;i<MAXDIGITS;++i)
v[i]=0;
if(x==0)
v[0]++;
while(x>0)
{
v[++v[0]]=x%10;
x/=10;
}
}
NumarMare(char *s)
{
for(int i=0;i<MAXDIGITS;i++)
v[i]=0;
int n=strlen(s);
for(int i=n-1;i>=0;i--)
v[++v[0]]=s[i]-'0';
}
inline void Afisare()
{
for(int i=v[0];i>=1;i--)
g<<v[i];
}
};
NumarMare operator + (NumarMare A,NumarMare B)
{
NumarMare C;
int t=0,i,d;
d=max(A.v[0],B.v[0]);
for(i=1;i<=d || t>0;i++)
{
t+=A.v[i]+B.v[i];
C.v[i]=t%10;
t/=10;
}
C.v[0]=i-1;
return C;
}
inline int operator % (NumarMare A,long long x)
{
int rest=0;
for(int i=A.v[0];i>=1;i--)
rest=(rest*10+A.v[i])%x;
return rest;
}
int main()
{
long long d;
f>>(s+1)>>d;
NumarMare B(s+1);
NumarMare V=B+(d-(B%d));
V.Afisare();
return 0;
}