Pagini recente » Solutii Summer Challenge, Runda 2 | Cod sursa (job #259740) | Cod sursa (job #1900342) | Cod sursa (job #306545) | Cod sursa (job #412930)
Cod sursa(job #412930)
#include <fstream>
using namespace std;
#include <cstring>
ifstream FIn("next.in");
ofstream FOut("next.out");
const int NMax=1<<20;
const int DMax=1<<5;
short int N[NMax],DM[DMax],chici[DMax];
long long D;
void IN(),OUT(),JUST_DO_IT();
int MOD(short int a[],long long b);void SUM(short int a[],short int b[]);
int main(){IN();JUST_DO_IT();return 0;}
void IN(){
for(char ch;FIn>>noskipws>>ch && ch!='\n';N[++N[0]]=ch-'0'){}
for(int i=1,aux;i<=(N[0]>>1);aux=N[i],N[i]=N[N[0]-i+1],N[N[0]-i+1]=aux){}
FIn>>D;
}
void OUT(){
for(int i=N[0];i>=1;FOut<<N[i--]){}
}
void JUST_DO_IT(){
int modulo=MOD(N,D);
if(!modulo){
OUT();
return;
}
D-=modulo;
for(;D;chici[++chici[0]]=D%10,D/=10){}
SUM(N,chici);
OUT();
}
int MOD(short int a[],long long b){
int i,t=0;
for(i=a[0];i;t=(t*a[i--]%b)){}
return t;
}
void SUM(short int a[],short int b[]){
int i,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;
}