Pagini recente » Cod sursa (job #1193053) | Cod sursa (job #1391046) | Cod sursa (job #473179) | Cod sursa (job #1429624) | Cod sursa (job #1425278)
#include <fstream>
#include <vector>
#include <string>
using namespace std;
ifstream fin ( "next.in" );
ofstream fout ( "next.out" );
vector < int > A, B;
string S;
long long Modulo ( vector < int > &A, int Mod ){
long long rez = 0;
for ( int i = A.size() - 1; i >= 0; --i )
rez = ( rez * 10 + A[i] ) % Mod;
return rez;
}
void Adun ( vector < int > &A, vector < int > &B ){
int T = 0;
while ( A.size() < B.size() )
A.push_back ( 0 );
while ( B.size() < A.size() )
B.push_back ( 0 );
for ( int i = 0; i < A.size(); ++i ){
A[i] += B[i] + T;
T = A[i] / 10;
A[i] %= 10;
}
if (T)
A.push_back ( T );
}
int main(){
vector < int > :: iterator it;
long long D;
fin >> S >> D;
for ( int i = S.size() - 1; i >= 0; --i )
A.push_back ( S[i] - '0' );
S.clear();
long long rest = Modulo ( A, D );
if ( rest ){
D -= rest;
while ( D ){
B.push_back ( D%10 );
D /= 10;
}
Adun ( A, B );
}
for ( int i = A.size()-1; i >= 0; --i )
fout << A[i];
return 0;
}