Pagini recente » Cod sursa (job #1962466) | Cod sursa (job #539040) | Istoria paginii utilizator/4ndu4n | Cod sursa (job #2241356) | Cod sursa (job #1712464)
#include <cstdio>
#include <algorithm>
#define MAX 2000000
using namespace std;
typedef int B[1000005];
B rez,aux;
char f[MAX];
int D,t,pos=0,MOD=0;
void Div(B &arr, int nr)
{
int t=0;
aux[0]=0;
for(int i=arr[0];i>0;i--)
{
t=t*10+arr[i];
if(t/nr>0)
{
aux[++aux[0]]=t/nr;
t%=nr;
}
}
for(int i=0;i<=aux[0];i++)
arr[i]=aux[i];
MOD=t;
}
void Prod(B &arr,int nr)
{
int t=0;
for(int i=1;i<=arr[0];i++)
{
arr[i]=t+arr[i]*nr;
t=arr[i]/10;
arr[i]%=10;
if(i==arr[0]&&t>0)
{
arr[0]++;
arr[arr[0]]=0;
}
}
}
void Sum(B &s,B arr)
{
int t=0;
s[0]=max(s[0],arr[0]);
for(int i=1;i<=arr[0];i++)
s[i]+=arr[i];
for(int i=1;i<=s[0];i++)
{
s[i]+=t;
t=s[i]/10;
s[i]%=10;
}
if(t>0)
{
s[0]++;
s[s[0]]=t;
}
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
fread(f,1,MAX,stdin);
while(f[pos]>='0'&&f[pos]<='9')
rez[++rez[0]]=f[pos++]-'0';
for(int i=1;i<=rez[0]/2;i++)
{
t=rez[i];
rez[i]=rez[rez[0]-i+1];
rez[rez[0]-i+1]=t;
}
pos++;
while(f[pos]>='0'&&f[pos]<='9')
D=D*10+f[pos++]-'0';
Div(rez,D);
if(MOD>0)
{
aux[0]=aux[1]=1;
if(t>0)
Sum(rez,aux);
}
Prod(rez,D);
for(int i=rez[0];i>0;i--)
printf("%d",rez[i]);
return 0;
}