共63道题,当前是第61

Description

1	#include < bits/stdc++.h>
2	using namespace std;
3
4	typedef long long ll;
5	const int mod = 2048;
6	ll c, n;
7	ll func(ll x, ll mi){
8		ll res = 1;
9		while (mi){
10			if (mi&1) res = (res * x) % mod;
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		ll ans=((func(c-1,n)+(c-1)*func(-1,n))%mod+mod)%mod;
23		cout << ans;
24		return 0;
25	}

1. T
2. T
3. F。
4. T。
5. C。
6. C。
该段代码是使用快速幂计算某个数的指数幂:
$n == 3$ 时 $ans = c * (c - 1)$
其他情况时 $ans = ((c-1)^n + (c-1) * (-1)^n)%2048$

Question

将第 $10$ 行 $res = (res*x)%mod;$ 和第 $11$ 行 $x = (x*x)%mod;$ 的括号去掉,程序输出结果一定不变。( )

将第 $12$ 行的 $m>>= 1$ 改为 $mi /= 2$ ,程序输出结果一定不变。( )

若输入为 $4 \ 4$ ,则输出为 $78$ 。( )

此程序的时间复杂度为 $O(logn)$。( )

若输入为 $3 \ 4$ ,则输出为( )。

若输入为 $2046\ 13$ 的返回值为( )。