阅读以下程序,完成相关问题
01 #include<bits/stdc++.h> 02 using namespace std; 03 const int mod = 2048; 04 long long c, n; 05 long long kasumi(long long x, long long mi) { 06 long long res = 1; 07 while (mi) { 08 if (mi & 1) { 09 res = (res * x) % mod; 10 } 11 x = (x * x) % mod; 12 mi >>= 1; 13 } 14 return res; 15 } 16 int main() { 17 cin >> n >> c; 18 if (n == 3) { 19 printf("%lld", c * (c - 1)); 20 return 0; 21 } 22 long long ans = ((kasumi(c - 1, n) + (c - 1) * kasumi(-1, n)) 23 % mod + mod) % mod; 24 cout << ans; 25 return 0; 26 }
1.将第 9 ⾏ res = (res * x) % mod; 和第 11 ⾏ x = (x * x) % mod; 的括号去掉,程序输出结果⼀定不变。( )
2.将第 12 ⾏的 mi >>= 1 改为 mi /= 2 ,程序输出结果⼀定不变。( )
3.若输⼊为 4 4 ,则输出为 78 。( )
4.此程序的时间复杂度为 $O(logn)$
5.若输⼊为 3 4 ,则输出为( )。
6.kasumi(2046, 13) 的返回值为( )。
陈伦制作 版权所无 粤ICP备16127491号-1