Pagini recente » Cod sursa (job #2808034) | Cod sursa (job #320427) | Cod sursa (job #2027864) | Cod sursa (job #1621843) | Cod sursa (job #412814)
Cod sursa(job #412814)
#include <fstream>
using namespace std;
ifstream FIn("next.in");
ofstream FOut("next.out");
const long long NMax=(long long)1000002;
const unsigned short DMax=1<<5;
long long DMic;
short int N[NMax],DMare[DMax],Rez[NMax<<1];
void IN(){
for(char c;FIn>>noskipws>>c && c!='\n';N[++N[0]]=c-'0'){
}
for(int aux,i=1;i<=N[0]/2;aux=N[i],N[i]=N[N[0]-i+1],N[N[0]-i+1]=aux,++i){
}
for(char c;FIn>>noskipws>>c && c!='\n';DMare[++DMare[0]]=c-'0'){
}
for(int aux,i=1;i<=DMare[0]/2;aux=DMare[i],DMare[i]=DMare[DMare[0]-i+1],DMare[DMare[0]-i+1]=aux,++i){
}
for(int i=DMare[0];i>=1;DMic=DMic*10+DMare[i--]){
}
}
int Rest(short int a[],long long b){
int i,t=0;
for(i=a[0];i;t=(t*10+a[i--])%b){
}
return t;
}
void Suma(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-1;
}
void Scadere(short int a[],short int b[]){
int i,t=0;
for(i=1;i<=a[0];++i){
a[i]+=(t=(a[i]-=((i<=b[0])?b[i]:0)+t)<0)%10;
}
for(;a[0]>1&&!a[a[0]];--a[0]){
}
}
void JUST_DO_IT(){
long long rest=Rest(N,DMic);
for(;rest;Rez[++Rez[0]]=rest%10,rest/=10){
}
Suma(N,DMare);
Scadere(N,Rez);
}
void OUT(){
for(int i=N[0];i>=1;FOut<<N[i--]){
}
}
int main(){
IN();
JUST_DO_IT();
OUT();
return 0;
}