for (int i = 0; i <= n; i++) {
c[i][0] = c[i][i] = 1;
for (int j = 1; j < i; j++)
c[i][j] = __________;
}
2分
登录后查看选项
05
下列程序输出的值为( )。
#include <iostream>
using namespace std;
long long qpow(long long a, long long b, long long mod) {
long long ans = 1 % mod;
while (b) {
if (b & 1)
ans = ans * a % mod;
a = a * a % mod;
b >>= 1;
}
return ans;
}
int main() {
cout << qpow(3, 20, 17) << endl;
return 0;
}
2分
登录后查看选项
06
归并排序每次把长度为 n 的序列分成两个规模约为 n/2 的子序列,递归排序后再用线性时间合并。该算法的时间复杂度通常为( )。
下列线性筛的代码片段中,当枚举到质数 p 且 i % p == 0 时,使用 break; 语句停止继续枚举。这样做的主要目的是( )。
for (int i = 2; i <= n; ++i) {
if (!is_composite[i])
primes.push_back(i);
for (int p : primes) {
if (i * p > n)
break;
is_composite[i * p] = true;
if (i % p == 0)
break; // 这条语句的目的是?
}
}