Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int NMAX=101;
- char nr[NMAX];
- int a[NMAX],b[NMAX],c[NMAX],nsol,na,nb,nc,sol[NMAX],dif[NMAX],ndif;
- int p,q;
- ifstream fin("numere20.in");
- ofstream fout("numere20.out");
- inline void Imp(int aux[],int &naux,int k)
- {
- int cifra=0;
- for(int i=naux;i>=1;i--)
- {
- cifra=cifra*10+aux[i];
- aux[i]=cifra/k;
- cifra=cifra-aux[i]*k;
- }
- while(!aux[naux])
- naux--;
- }
- inline void S()
- {
- nsol=max(na,nb);
- if(na<nb)
- {
- for(int i=na+1;i<=nb;i++)
- a[i]=0;
- }
- else
- {
- for(int i=nb+1;i<=na;i++)
- b[i]=0;
- }
- int t,cifra;
- t=0;
- for(int i=1;i<=nsol;i++)
- {
- cifra=a[i]+b[i]+t;
- sol[i]=cifra%10;
- t=cifra/10;
- }
- if(t)
- sol[++nsol]=t;
- }
- inline void D2()
- {
- if(nsol<nc)
- {
- for(int i=nsol+1;i<=nc;i++)
- sol[i]=0;
- nsol=nc;
- }
- else
- {
- for(int i=nc+1;i<=nsol;i++)
- c[i]=0;
- }
- int cifra,t=0;
- for(int i=1;i<=nsol;i++)
- {
- cifra=sol[i]-c[i]+t;
- if(cifra<0)
- {
- sol[i]=cifra+10;
- t=-1;
- }
- else
- {
- sol[i]=cifra;
- t=0;
- }
- }
- while(!sol[nsol])
- nsol--;
- }
- inline void D()
- {
- if(nsol<ndif)
- {
- for(int i=nsol+1;i<=ndif;i++)
- sol[i]=0;
- nsol=ndif;
- }
- else
- {
- for(int i=ndif+1;i<=nsol;i++)
- dif[i]=0;
- }
- int cifra,t=0;
- for(int i=1;i<=nsol;i++)
- {
- cifra=dif[i]-sol[i]+t;
- if(cifra<0)
- {
- sol[i]=cifra+10;
- t=-1;
- }
- else
- {
- sol[i]=cifra;
- t=0;
- }
- }
- while(!sol[nsol])
- nsol--;
- }
- int main()
- {
- fin>>nr>>p>>q;
- for(int i=strlen(nr)-1;i>=0;i--)
- {
- a[++na]=nr[i]-'0';
- b[++nb]=nr[i]-'0';
- c[++nc]=nr[i]-'0';
- dif[++ndif]=nr[i]-'0';
- }
- Imp(a,na,p);
- Imp(b,nb,q);
- Imp(c,nc,p*q);
- S();
- D2();
- D();
- for(int i=nsol;i>=1;i--)
- fout<<sol[i];
- fout<<"\n";
- fin.close();
- fout.close();
- return 0;
- }
Add Comment
Please, Sign In to add comment