Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void fastPow_2variant(int num, int MOD,int m) {//изпълнение на задача 10
- cout << "Variant 2:" << endl;
- int c = 0;//променливав която ще извършваме степенуване на всяка итерация на цикъла
- int b = num;//запазваме стойноста на въведеното число num
- int tmp = 0;// променлива в която ще съхраним (c % MOD)
- int res = 0;
- for (int i = 2;i < m;i*= 2) {
- if (i & 1)
- b = ((long long)b * b) % MOD;
- c = pow(num, i);
- if (i == 2)
- cout << num << "^" << i << " =" << "(" << num << "^" << i / 2 << ")" "^" << 2 << "mod(" << MOD << ")" << " " << c % MOD << endl;
- else {
- if (i > 2) {
- c = pow(num, i / 2);
- tmp = abs(c % MOD);
- res = pow(tmp, 2);
- cout << num << "^" << i << " =" << "(" << num << "^" << i / 2 << ")" "^" << 2 << "mod(" << MOD << ")" << " " << tmp << "^" << 2 << "mod(" << MOD << ")" << res % MOD << endl;
- }
- }
- }
- cout << endl;
- cout << num << "^" << m << "=" << num << "^64 + 32 + 4 =" << MOD << " " << 4 << "*" << 2 << "*" << 4 << "mod(" << MOD << ")" << " " << (4*2*4) % MOD;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement