#CS51002. 完善程序10-数论-2快速幂

完善程序10-数论-2快速幂

快速幂

请完善下面的程序,该程序使用分治法求xpmod m x^{p} \bmod\ m 的值。(第一空 2 分,其余 3 分)

输入:三个不超过 10000 的正整数x,p,m x,p,m

输出:xpmod mx^{p} \bmod\ mm的值。

提示:若p p 为偶数,xp=(x2)p/2x^{p}=(x^{2})^{p/2};若pp 为奇数,xp=ximes(x2)(p1)/2x^{p}=x\\ imes (x^{2})^{(p-1)/2}

#include<iostream>
using namespace std;
int x, p, m, i, result;
int main(){
    cin >> x >> p >> m;
    result = ①;
    while (②){
        if (p % 2 == 1)
            result = ③;
        p /= 2;
        x = ④;
    }
    cout << ⑤ << endl;
    return 0;
}
  1. ①处应填( ){{ select(1) }}
  • 0
  • 1
  • p/2
  • p-1/2
  1. ②处应填( ){{ select(2) }}
  • p
  • x
  • p/2!=0
  • A&C
  1. ③处应填( ){{ select(3) }}
  • result%m
  • x%m
  • result*x%m
  • result* result
  1. ④处应填( ){{ select(4) }}
  • x*x
  • x*x %m
  • x %m
  • x*x % result
  1. ⑤处应填( ){{ select(5) }}
  • x
  • m
  • p
  • result