Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- unsigned long long n, b, r, r1=0, i, t;
- typedef unsigned long long NrMare[100001];
- NrMare x, y;
- int main()
- {
- cin>>n>>b>>r;
- x[0]=n, x[n]=1; // la nr mari se lucreaza rasturnat deci am pus ultima cifra 1, restul au ramas 0
- for(i=x[0];i>0;i--) // aici am calculat restul numarului
- {
- r1=r1*10+x[i];
- r1%=b;
- }
- if(r>=r1) // cazul in care restul cerut este mai mare sau egal ca restul numarului format din n cifre adica x
- {
- r1=r-r1;
- while(r1) // salvez valoarea restului intr-un alt numar mare
- {
- y[++y[0]]=r1%10;
- r1/=10;
- }
- if(x[0]<y[0]) x[0]=y[0];
- for(i=1;i<=x[0];i++,t/=10) // adunarea numerelor mari
- {
- t=x[i]+y[i]+t;
- x[i]=t%10;
- }
- if(t) x[++x[0]]=t;
- }
- else // celalalt caz - exact aceeasi chestie, doar r1 se modifica
- {
- r1=b+r-r1;
- while(r1)
- {
- y[++y[0]]=r1%10;
- r1/=10;
- }
- if(x[0]<y[0]) x[0]=y[0];
- for(i=1;i<=x[0];i++,t/=10)
- {
- t=x[i]+y[i]+t;
- x[i]=t%10;
- }
- if(t) x[++x[0]]=t;
- }
- for(i=x[0];i>0;i--) // verific daca numarul determinat respecta conditia ceruta (*)
- {
- r1=r1*10+x[i];
- r1%=b;
- }
- if(r1==r) // (*) o respecta deci afisez numarul
- for(i=x[0];i>0;i--) cout<<x[i];
- else
- cout<<-1; // nu o respecta
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement