Pagini recente » Cod sursa (job #3367333) | Cod sursa (job #3366357) | Cod sursa (job #3366369) | Cod sursa (job #3366316) | Cod sursa (job #3366851)
#include <iostream>
#include <fstream>
using namespace std;
char a[100000001];
char b[100000001];
ifstream fin("next.in");
ofstream fout("next.out");
void impartire(char v1[],char v2[],long long divizor,int na,int &nb){
long long nrimpartire=0;
int v2Index=1;
for(int i=1;i<=na;i++){
nrimpartire=nrimpartire*10+(v1[i]-48);
if(nrimpartire/divizor!=0){
v2[v2Index]=nrimpartire/divizor+48;
nrimpartire=nrimpartire%divizor;
v2Index++;
nb++;
}
}
}
void inmultire(char a[],int& na,long long b) {
int t, i;
t=0;
i=1;
while (i<na||t>0) {
if(a[i]!=0){
t+=b*(a[i]-48);
}
a[i]=t%10+48;
t/=10;
i++;
}
if (i > na)
na = i-1;
}
int main()
{
string number;
int nrcif=1,na=0,nb=0;
long long divizor;
fin>>number;
fin>>divizor;
for(char ch : number){
a[nrcif]=ch;
nrcif++;
}
nrcif--;
impartire(a,b,divizor,nrcif,nb);
if(b[nb]!=57){
b[nb]++;
}else{
for(int i=nb;b[i]==57;i--){
b[i]=48;
if(b[i-1]!=57){
b[i-1]++;
}
}
}
for(int i=1;i<=nb/2;i++){
swap(b[i],b[nb-i+1]);
}
inmultire(b,nb,divizor);
for(int i=nb;i>=1;i--){
fout<<b[i];
}
return 0;
}