Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. unsigned long long n, b, r, r1=0, i, t;
  6. typedef unsigned long long NrMare[100001];
  7.  
  8. NrMare x, y;
  9.  
  10. int main()
  11. {
  12. cin>>n>>b>>r;
  13. x[0]=n, x[n]=1; // la nr mari se lucreaza rasturnat deci am pus ultima cifra 1, restul au ramas 0
  14. for(i=x[0];i>0;i--) // aici am calculat restul numarului
  15. {
  16. r1=r1*10+x[i];
  17. r1%=b;
  18. }
  19. if(r>=r1) // cazul in care restul cerut este mai mare sau egal ca restul numarului format din n cifre adica x
  20. {
  21. r1=r-r1;
  22. while(r1) // salvez valoarea restului intr-un alt numar mare
  23. {
  24. y[++y[0]]=r1%10;
  25. r1/=10;
  26. }
  27. for(i=1;i<=x[0];i++,t/=10) // adunarea numerelor mari
  28. {
  29. t=x[i]+y[i]+t;
  30. x[i]=t%10;
  31. }
  32. if(t) x[++x[0]]=t;
  33. }
  34. else // celalalt caz - exact aceeasi chestie, doar r1 se modifica
  35. {
  36. r1=b+r-r1;
  37. while(r1)
  38. {
  39. y[++y[0]]=r1%10;
  40. r1/=10;
  41. }
  42. for(i=1;i<=x[0];i++,t/=10)
  43. {
  44. t=x[i]+y[i]+t;
  45. x[i]=t%10;
  46. }
  47. if(t) x[++x[0]]=t;
  48. }
  49. for(i=x[0];i>0;i--) // verific daca numarul determinat respecta conditia ceruta (*)
  50. {
  51. r1=r1*10+x[i];
  52. r1%=b;
  53. }
  54. if(r1==r) // (*) o respecta deci afisez numarul
  55. for(i=x[0];i>0;i--) cout<<x[i];
  56. else
  57. cout<<-1; // nu o respecta
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement