Pagini recente » Cod sursa (job #560980) | Cod sursa (job #1651391) | Cod sursa (job #551878) | Cod sursa (job #2952431) | Cod sursa (job #831641)
Cod sursa(job #831641)
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
typedef int Huge[1000006];
typedef int Huge1[50];
Huge A;
Huge1 B;
unsigned long long Mod(Huge A,unsigned long long x)
{
int i;
unsigned long long R=0;
for(i=A[0]; i>=1; i--)
R = (10*R + A[i])%x;
return R;
}
void Sum(Huge A,Huge1 B)
{
int i,T=0;
if(A[0] > B[0])
{
for(i=B[0]+1; i<=A[0]; i++) B[i] = 0;
B[0] = A[0];
}
else for(i=A[0]+1; i<=B[0]; i++) A[i] = 0;
for(i=1; i<=B[0]; i++)
{
A[i] += (B[i]+T);
T = A[i]/10;
A[i]%=10;
}
if(T) A[++A[0]] = T;
}
int main()
{
char nn[100005];
int i;
unsigned long long d,r;
f>>nn;
f>>d;
A[0] = strlen(nn);
for(i=1; i<=A[0]; i++)
A[i] = (nn[A[0]-i] - '0');
r = Mod(A,d);
if(r == 0)
{
for(i=A[0]; i>=1; i--)
g<<A[i];
}
else
{
d-=r;
B[0] = 0;
while(d != 0)
{
B[++B[0]] = d%10;
d/=10;
}
Sum(A,B);
for(i=A[0]; i>=1; i--)
g<<A[i];
}
f.close();
g.close();
return 0;
}