题目信息

题目类型
入门级
题目年份
2021
题目题型
综合题
关 键 词
自然数

题目题干

第 18组合题
  1. #include <iostream> 
  2.  
  3.  using namespace std; 
  4.  
  5. const int n = 100000; 
  6.  
  7. const int N = n + 1; 
  8.  
  9. int m; 
  10.  
  11.  int a[N], b[N], c[N], d[N]; 
  12.  
  13.  int f[N], g[N]; 
  14.  
  15.  void init() 
  16.  
  17.  { 
  18.  
  19.  f[1] = g[1] = 1; 
  20.  
  21.  for (int i = 2; i <= n; i++) { 
  22.  
  23.  if (!a[i]) { 
  24.  
  25. b[m++] = i; 
  26.  
  27.  c[i] = 1, f[i] = 2; 
  28.  
  29. d[i] = 1, g[i] = i + 1; 
  30.  
  31.  } 
  32.  
  33.  for (int j = 0; j < m && b[j] * i <= n; j++) { 
  34.  
  35.  int k = b[j]; 
  36.  
  37.  a[i * k] = 1; 
  38.  
  39.  if (i % k == 0) { 
  40.  
  41.  c[i * k] = c[i] + 1; 
  42.  
  43.  f[i * k] = f[i] / c[i * k] * (c[i * k] + 1); 
  44.  
  45. d[i * k] = d[i]; 
  46.  
  47.  g[i * k] = g[i] * k + d[i]; 
  48.  
  49.  break
  50.  
  51.  } 
  52.  
  53. else { 
  54.  
  55.  c[i * k] = 1; 
  56.  
  57.  f[i * k] = 2 * f[i]; 
  58.  
  59. d[i * k] = g[i]; 
  60.  
  61.  g[i * k] = g[i] * (k + 1); 
  62.  
  63.  } 
  64.  
  65.  } 
  66.  
  67.  
  68.  } 
  69.  
  70.  
  71.  
  72.  int main() 
  73.  
  74.  { 
  75.  
  76.  init(); 
  77.  
  78.  
  79.  
  80.  int x; 
  81.  
  82.  cin >> x; 
  83.  
  84. cout << f[x] << ' ' << g[x] << endl; 
  85.  
  86.  return 0; 
  87.  
  88.  } 

假设输入的 x 是不超过 1000 的自然数,完成下面的判断题和单选题:8OI100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

 判断

若输入不为“1”,把第 13 行删去不会影响输出的结果。( )8OI100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A.正确
B.错误
 
 判断

第 25 行的“f[i] / c[i * k]”可能存在无法整除而向下取整的情况。( )8OI100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A.正确
B.错误
 
判断

在执行完 init()后,f 数组不是单调递增的,但 g 数组是单调递增的。( )8OI100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A.正确
B.错误
 
 单选

init 函数的时间复杂度为( )。8OI100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A.Θ(n)
B.Θ(n log n)
C.第 18 #include <iostream>     using namespace std;        const int n = 100000;    const int N = n + 1;        int m;     int a[N], b[N], c[N], d[N];     int f[N], g[N];         void init()     {     f[1] = g[1] = 1;     for (int i = 2; i <= n; i++) {     if (!a[i]) {    b[m++] = i;     c[i] = 1, f[i] = 2;    d[i] = 1, g[i] = i + 1;     }     for (int j = 0; j < m && b[j] * i <= n; j++) {     int k = b[j];     a[i * k] = 1;     if (i % k == 0) {     c[i * k] = c[i] + 1;     f[i * k] = f[i] / c[i * k] * (c[i * k] + 1);    d[i * k] = d[i];     g[i * k] = g[i] * k + d[i];     break;     }    else {     c[i * k] = 1;     f[i * k] = 2 * f[i];    d[i * k] = g[i];     g[i * k] = g[i] * (k + 1);     }     }    }     }         int main()     {     init();         int x;     cin >> x;    cout << f[x] << ' ' << g[x] << endl;     return 0;     }  假设输入的 x 是不超过 1000 的自然数,完成下面的判断题和单选题:   判断 若输入不为“1”,把第 13 行删去不会影响输出的结果。( )  A.正确 B.错误   判断 第 25 行的“f[i] / c[i * k]”可能存在无法整除而向下取整的情况。( )  A.正确 B.错误  判断 在执行完 init()后,f 数组不是单调递增的,但 g 数组是单调递增的。( )  A.正确 B.错误   单选 init 函数的时间复杂度为( )。  A.Θ(n) B.Θ(n log n) C. D.Θ(n2)   单选 在执行完 init()后,f[1], f[2], f[3] …… f[100]中有( )个等于 2。  A.23 B.24 C.25 D.26  单选 当输入为“1000”时,输出为( )。  A.8OI100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
D.Θ(n2
 
 单选

在执行完 init()后,f[1], f[2], f[3] …… f[100]中有( )个等于 2。8OI100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A.23
B.24
C.25
D.26
 
单选

当输入为“1000”时,输出为( )。8OI100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

A."15  1340"
B."15  2340"
C."16  2340"
D."16  1340"
 
 

答案解析

相关题目

第19 (Josephus 问题)有 n个人围成一个圈,依次标号 0 至n-1。从 0 号开始,依次 0, 1, 0, 1, … 交替报数,报到 1 的人会离开,直至圈中只剩下一个人。求最后剩下人的编
第 18 #include <iostream>     using namespace std;        const int n = 100000;    const int N 
第17 题  #include <iostream>     #include <string>     using namespace std;          char 
第 1题  #include <iostream>     using namespace std;     int n;     int a[1000];         int f(i
第 15 题 有四个人要从 A 点坐一条船过河到 B 点,船一开始在 A 点。该船一次最多可坐两个人。 已知这四个人中每个人独自坐船的过河时间分别为1,2,4,8,且两个人坐船的过河时间为两人独自过河
第 14 题 以 a为起点,对下边的无向图进行深度优先遍历,则 b,c,d,e 四个点中有可能作为最后一个遍历到的点的个数为( )。   A. 1  B. 2  C. 3  D. 4
第 13 题 考虑如下递归算法 solve(n)         if n<=1 return 1          else if n>=5 return n*solve(n-2) 
第 12 题 由 1,1,2,2,31,1,2,2,3 这五个数字组成不同的三位数有( )种。  A. 18  B. 15  C. 12  D. 24
第 11 题 在数据压缩编码中的哈夫曼编码方法,在本质上是一种( )的策略。  A. 枚举  B. 贪心  C. 递归  D. 动态规划
第 10 题 66 个人,两个人组一队,总共组成三队,不区分队伍的编号。不同的组队情况有( )种。  A. 10  B. 15  C. 30  D. 20

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!
  • 温馨提示:本文属于积分文章,需要充值获得积分或升级VIP会员,也可在会员中心投稿获取。

猜你喜欢