Advertisement
Yanislav29

Untitled

Jan 4th, 2020
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. void fastPow_2variant(int num, int MOD,int m) {//изпълнение на задача 10
  2. cout << "Variant 2:" << endl;
  3. int c = 0;//променливав която ще извършваме степенуване на всяка итерация на цикъла
  4.  
  5. int b = num;//запазваме стойноста на въведеното число num
  6. int tmp = 0;// променлива в която ще съхраним (c % MOD)
  7. int res = 0;
  8. for (int i = 2;i < m;i*= 2) {
  9.  
  10. if (i & 1)
  11.  
  12.  
  13. b = ((long long)b * b) % MOD;
  14. c = pow(num, i);
  15.  
  16.  
  17. if (i == 2)
  18. cout << num << "^" << i << " =" << "(" << num << "^" << i / 2 << ")" "^" << 2 << "mod(" << MOD << ")" << " " << c % MOD << endl;
  19.  
  20. else {
  21. if (i > 2) {
  22. c = pow(num, i / 2);
  23. tmp = abs(c % MOD);
  24. res = pow(tmp, 2);
  25. cout << num << "^" << i << " =" << "(" << num << "^" << i / 2 << ")" "^" << 2 << "mod(" << MOD << ")" << " " << tmp << "^" << 2 << "mod(" << MOD << ")" << res % MOD << endl;
  26. }
  27.  
  28. }
  29. }
  30.  
  31. cout << endl;
  32.  
  33. cout << num << "^" << m << "=" << num << "^64 + 32 + 4 =" << MOD << " " << 4 << "*" << 2 << "*" << 4 << "mod(" << MOD << ")" << " " << (4*2*4) % MOD;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement