fork(1) download
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. unsigned long long x, n, akr=0;
  6. string y, zad="";
  7.  
  8. void DzielPrzezDwa(string& my)
  9. {
  10. int a, b=0;
  11. for(int i=0; i<my.length(); i++)
  12. {
  13. a = (int)my[i] - 48 + b;
  14. b = 0;
  15. my[i] = (a/2) + 48;
  16. if(a%2==1) b = 10;
  17. }
  18. if(my[0]==48) my.erase(0, 1);
  19. }
  20.  
  21. void Licz(string& my)
  22. {
  23. while(my!="1")
  24. {
  25. if(my[my.length()-1]%2==1)
  26. {
  27. akr *= x;
  28. akr %= n;
  29. }
  30. x *= x;
  31. x %= n;
  32.  
  33. DzielPrzezDwa(my);
  34. }
  35. akr *= x;
  36. akr %= n;
  37. x *= x;
  38. x %= n;
  39. }
  40.  
  41. int main()
  42. {
  43. int t;
  44. cin >> t;
  45. while(t--)
  46. {
  47. akr=1;
  48. zad="";
  49. cin >> x >> y >> n;
  50. Licz(y);
  51. cout << akr << endl;
  52. }
  53. }
  54.  
Success #stdin #stdout 0s 15240KB
stdin
2
54015779 489100829 472960975
827371214 966345673 443599139
stdout
350431544
391669493