Pagini recente » Cod sursa (job #3041383) | Cod sursa (job #2356489) | Cod sursa (job #1988039) | Cod sursa (job #2407039) | Cod sursa (job #63943)
Cod sursa(job #63943)
#include<stdio.h>
#include<string.h>
long long k;
int *a=new int[1000100];
int *b=new int[100];
void citire()
{ char sir[1000100];
freopen("next.in","r",stdin);
long long n, i;
scanf("%s %lld",&sir,&k);
n = strlen(sir);
a[0] = n;
for (i = 0; i < n; i++)
a[n-i] = sir[i] - '0';
}
void div(int A[], int B)
{
long long i, t = 0;
for (i = A[0]; i > 0; i--, t %= B)
A[i] = (t = t * 10 + A[i]) / B;
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
void adunare(int a[],int b[])
{ int s[1000000], ct ,i;
ct = 0;
memset ( s, 0, sizeof(s));
if ( a[0] > b[0] ) s[0] = a[0];
else s[0] = b[0];
for (i = 1; i <= s[0]; i++)
{ s[i] = a[i] + b[i] + ct;
ct = s[i] / 10;
s[i] = s[i] % 10;
}
if (ct) { s[0]++;
s[s[0]] = ct;
}
for (i=0;i<=s[0]; i++) a[i]=s[i];
}
void inmultire(int A[], long long B)
{
int i, t = 0;
for (i = 1; i <= A[0] || t; i++, t /= 10)
A[i] = (t += A[i] * B) % 10;
A[0] = i - 1;
}
void afis()
{
freopen("next.out","w",stdout);
for (long long i=a[0]; i>=1;i--)
printf("%d",a[i]);
}
int main()
{
citire();
div(a,k);
b[0]=1; b[1]=1;
adunare(a,b);
inmultire(a,k);
afis();
return 0;
}