首页 / 客观题库

80781 - CSP-S2026阅读程序2

数据结构

题目(材料题)

01 #include <iostream>
02 using namespace std;
03 int n, m, a[100007], L, R, lg[100007], i, j, t, dp[100007][25], pw[25];
04 int gcd(int x, int y) {
05  if (y == 0) return x;
06  return gcd(y, x % y);
07 }
08 int main() {
09  cin >> n >> m;
10  for (i = 1; i <= n; i++) cin >> a[i];
11  t = 0;
12  pw[0] = 1;
13  for (i = 1; i <= 24; i++) pw[i] = pw[i - 1] * 2;
14  for (i = 2; i <= 100000; i++)
15      if (pw[t + 1] >= i) lg[i] = t;
16      else t++, lg[i] = t;
17  for (i = 1; i <= n; i++)
18      dp[i][0] = a[i];
19  for (j = 1; j <= lg[n]; j++)
20      for (i = 1; i + pw[j] - 1 <= n; i++) {
21          dp[i][j] = gcd(dp[i][j - 1], dp[i + pw[j - 1]][j - 1]);
22      }
23  for (i = 1; i <= m; i++) {
24      cin >> L >> R;
25      cout << gcd(dp[L][lg[R - L + 1]], dp[R - pw[lg[R - L + 1]] + 1][lg[R - L + 1]]) << endl;
26  }
27  return 0;
28 }
 

保证$1≤n≤100000$,每次查询满足$1≤L≤R≤n$,且数组$a$的元素均为正整数。
||
当n=5,a={4,2,6,3,9},且仅有一次查询L=2、R=5时,输出为1。()

✔ 正确

✘ 错误

当某次查询的区间长度为1(即L=R)时,这次查询的输出一定等于a[L]。()

✔ 正确

✘ 错误

任意一次查询的输出结果一定不小于该查询区间内的最小值。()

✔ 正确

✘ 错误

( 单选 )
对于$j≥1$,数组$dp[i]$保存的是()。

A 从$a[i]$开始连续$j$个数的最大公约数

B 从$a[i]$开始连续$2^j$个数的最大公约数

C $a[i]$与$a[j]$的最大公约数

D 从$a[1]$到$a[j]$的最大公约数

( 单选 )
若把一次求最大公约数的运算视为O(1),则第17~22行建表过程的时间复杂度为()。    

A $Θ(n)$

B B.$Θ(nlogn)$

C $Θ(n^2)$

D $Θ(mn)$

( 单选 )
设$x$为一次查询的区间长度(即$x=R-L+1$),则使得$lg[x]=5$的$x$的取值范围是()。

A [16,31]

B [17,32]

C [32,63]

D [33,64]

意见反馈

    最多上传3张图片,格式为JPG、PNG、JPEG,单张不超过5MB

    注册

    发送验证码

    密码必须包含数字、字母和特殊字符

    找回密码

    发送验证码

    密码必须包含数字、字母和特殊字符

    运行 ID:67149

    • 测试点1:Accepted
    • 用时:0 ms
    • 内存:288 kb
    • 测试点2:Accepted
    • 用时:0 ms
    • 内存:288 kb
    输入
    203
    输出
    203

    test

    测评信息

    错误.in文件下载

    错误.out文件下载

    运行 ID:67149

    2019-01-24 15:06:36