首页 / 客观题库

80487 - CSP-S2025阅读题2

基础语法

题目(材料题)

01 #include <algorithm>

02 #include <cstdio>

03 #include <cstring>

04 #include <vector>

05 #define ll long long

06 int n, m;

07 std::vector<int> k, p;

08 inline int mpow(int x, int k) {

09     int ans = 1;

10     for (; k; k = k >> 1, x = x * x) {

11         if (k & 1)

12             ans = ans * x;

13     }

14     return ans;

15 }

16 std::vector<int> ans1, ans2;

17 int cnt1, cnt2;

18 inline void dfs(std::vector<int>& ans, int& cnt, int l, int r, int v) {

19     if (l > r) {

20         ++cnt;

21         ans.push_back(v);

22         return;

23     }

24     for (int i = 1; i <= m; ++i) {

25         dfs(ans, cnt, l + 1, r, v + k[l] * mpow(i, p[l]));

26     }

27     return;

28 }

29 std::vector<int> cntans1;

30 int main() {

31     scanf("%d%d", &n, &m);

32     k.resize(n + 1);

33     p.resize(n + 1);

34     for (int i = 1; i <= n; ++i) {

35         scanf("%d%d", &k[i], &p[i]);

36     }

37     dfs(ans1, cnt1, 1, n >> 1, 0);

38     dfs(ans2, cnt2, (n >> 1) + 1, n, 0);

39     std::sort(ans1.begin(), ans1.end());

40     int newcnt1 = 1;

41     cntans1.push_back(1);

42     for (int i = 1; i < cnt1; ++i) {

43         if (ans1[i] == ans1[newcnt1 - 1]) {

44             ++cntans1[newcnt1 - 1];

45         } else {

46             ans1[newcnt1++] = ans1[i];

47             cntans1.push_back(1);

48         }

49     }

50     cnt1 = newcnt1;

51     std::sort(ans2.begin(), ans2.end());

52     int las = 0;

53     ll ans = 0;

54     for (int i = cnt2 - 1; i >= 0; --i) {

55         for (; las < cnt1 && ans1[las] + ans2[i] < 0; ++las)

56             ;

57         if (las < cnt1 && ans1[las] + ans2[i] == 0)

58             ans += cntans1[las];

59     }

60     printf("%lld\n", ans);

61     return 0;

62 }

||

删除第 51 行的 “std::sort(ans2.begin(), ans2.end());” 后,代码输出的结果不会受到影响。

正确

错误

假设计算过程中不发生溢出,函数 mpow(x,k) 的功能是求出  $x^k$的取值。

正确

错误

代码中第 39 行到第 50 行的目的是为了将 ans1 数组进行“去重”操作。

正确

错误

( 单选 )

当输入为 “3 15 1 2 −1 2 1 2” 时,输出结果为( )

A 4

B 8

C 0

D 10

( 单选 )

记程序结束前 p 数组元素的最大值为 P,则该代码的时间复杂度是()

A $O(n)$

B $O(m^nlogm^n)$

C $O(m^{n/2}logm^{n/2})$

D $O(m^{n/2}(logm^{n/2}+logP))$

( 单选 )

本题所求出的是( )

A 满足 $a,b,c\in \left[1,m\right]] $的整数方程 $a^{3}+b^{3}=c^{3}$的解的数量

B 满足 $a,b,c\in \left[1,m\right]] $的整数方程 $a^{2}+b^{2}=c^{2}$的解的数量

C 满足 $x_{i}\in \left[0,m\right]$ 的整数方程 $\sum_{i=1}^{n} k_{i}\cdot x_{i}^{\,p}=0$的解的数量

D 满足 $x_{i}\in \left[1,m\right]$ 的整数方程 $\sum_{i=1}^{n} k_{i}\cdot x_{i}^{\,p}=0$的解的数量

意见反馈

    最多上传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