Pagini recente » Cod sursa (job #304534) | Cod sursa (job #1232253) | Cod sursa (job #2201256) | Cod sursa (job #3200316) | Cod sursa (job #1728333)
#include <fstream>
#include <vector>
#include <string>
std::ifstream input_file ( "next.in" );
std::ofstream output_file( "next.out" );
void mul( std::vector <int> &A, long long B ) {
int i; long long t = 0;
for( i = 1; i <= A[0] || t; i ++, t /= 10 )
A[i] = (t += A[i] * B) % 10;
A[0] = i - 1;
return;
}
void add( std::vector <int> &A, std::vector <int> &B ) {
int i; long long t = 0;
for( i = 1; i <= A[0] || i <= B[0] || t; i ++, t /= 10 )
A[i] = ( t += A[i] + B[i] ) % 10;
A[0] = i - 1;
return;
}
void div( std::vector <int> &A, long long B ) {
int i; long long t = 0;
for( i = A[0]; i > 0; i --, t %= B )
A[i] = ( t = t * 10 + A[i] ) / B;
while( A[0] > 1 && !A[ A[0] ] )
A[0] --;
return;
}
long long mod( std::vector <int> &A, long long B ) {
int i; long long t = 0;
for( i = A[0]; i > 0; i -- )
t = ( t * 10 + A[i] ) % B;
return t;
}
void SolveTestCase( void ) {
int N; long long D, E;
std::string MyString; input_file >> MyString >> D;
std::vector <int> A( MyString.length() + 30 ), B( 30 );
for( int i = 0; i < MyString.length(); i ++ )
A[ MyString.length() - i ] = MyString[i] - '0';
A[0] = MyString.length();
E = D;
while( E != 0 ) {
B[ ++B[0] ] = E % 10;
E /= 10;
}
if( mod( A, D ) == 0 )
output_file << MyString;
else {
div( A, D );
mul( A, D );
add( A, B );
for( int i = A[0]; i >= 1; i -- )
output_file << A[i];
}
return;
}
int main( int argc, const char *argv[] ) {
int T = 1;
for( int i = 0; i < T; i ++ )
SolveTestCase();
return 0;
}