Pagini recente » Cod sursa (job #1647284) | Cod sursa (job #2427121) | Cod sursa (job #1673858) | Cod sursa (job #2206271) | Cod sursa (job #62699)
Cod sursa(job #62699)
#include<stdio.h>
#include<string.h>
long long a[1000010], k, b[10];
void citire()
{ char sir[1000010];
freopen("next.in","r",stdin);
int n, i;
scanf("%s",&sir);
n = strlen(sir);
a[0] = n;
for (i = 0; i < n; i++)
a[n-i] = sir[i] - '0';
scanf("%lld",&k);
}
void div(long long A[], long long 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(long long a[], long long b[])
{ int s[1000], 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(long long 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 (int i=a[0]; i>=1;i--)
printf("%lld",a[i]);
}
int main()
{
citire();
div(a,k);
b[0]=1; b[1]=1;
adunare(a,b);
inmultire(a,k);
afis();
return 0;
}