Pagini recente » Cod sursa (job #841487) | Cod sursa (job #1514073) | Cod sursa (job #2624960) | Profil commercialgas686 | Cod sursa (job #988098)
Cod sursa(job #988098)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
#define Nmax 1500000
typedef int BigInteger[Nmax];
BigInteger N;
string s;
unsigned D;
void read()
{
ifstream f("next.in");
f >> s >> D;
f.close();
}
void init()
{
for ( int i = s.length() - 1; i >= 0; i-- )
N[ ++N[0] ] = s[i] - 48;
}
unsigned imparte( BigInteger a, unsigned divi )
{
unsigned R = 0;
for ( unsigned i = a[0]; i; i-- )
{
a[i] = ( R = R * 10 + a[i] ) / divi;
R %= divi;
}
while( !a[ a[0] ] && a[0] )
a[0]--;
return R;
}
void inmult( BigInteger &a, unsigned x )
{
unsigned T = 0;
for ( int i = 1; i <= a[0]; ++i )
{
a[i] = ( a[i] * x + T );
T = a[i] / 10;
a[i] %= 10;
}
while ( T )
a[ ++a[0] ] = T % 10,
T /= 10;
}
void aduna( BigInteger &a, unsigned x )
{
unsigned T = 0;
for ( int i = 1; i <= a[0] && ( T || x ); ++i )
{
a[i] = ( a[i] + x + T );
T = a[i] / 10;
a[i] %= 10;
x /= 10;
}
if ( T )
a[ ++a[0] ] = T;
}
void afis( BigInteger a )
{
ofstream g("next.out");
for ( int i = a[0]; i >= 1; i-- )
g << a[i] ;
g << "\n";
g.close();
}
int main()
{
read();
init();
if ( imparte( N, D ) )
aduna( N, 1 );
inmult( N, D );
afis( N );
return 0;
}