01 #include <iostream> 02 using namespace std; 03 04 int fastpow(int a, int b, int p) { 05 int ans = 1; 06 a = a % p; 07 for (int i = 0; i <= 31; i++) { 08 if (b & (1 << i)) ans = ans * a % p; 09 a = a * a % p; 10 } 11 return ans; 12 } 13 int main() { 14 int a, b, p; 15 cin >> a >> b >> p; 16 cout << fastpow(a, b, p); 17 return 0; 18 }
假设输入的 a 和 b 和 p 都是 int 范围内的正整数,完成下面的判断题和单选题:
1. 有必要将第 9 行 a*a 两侧添加括号。( )
2. 交换第 8 行与第 9 行,输出不会改变。( )
3. 缩小 b 的范围一定不会改变输出。(指在 a,p 任意给出时答案仍然正确,下同,且最多缩小至 10 )
4. 缩小 p 的范围一定不会改变输出。( )
5. 若输入的 a 为 4 ,b 为 7 ,则输出不可能为 ( )
6. 以下说法正确的是 ( )。