2019NOIP普及初初赛题错题整理

在这里插入图片描述
正解:C
一个字节包含 8 位二进制数,故应该占 44字节
在这里插入图片描述
正解:A
分析过程可以知道,ss先被赋值成了 a 又减掉了 c个 1,所以就是 s=a−c
在这里插入图片描述
正解:C
只需要考虑前 3 位,后 2 位是必须根据前边对应过来的,前两位取这 5 个数都可以,中间那一位只能取 0、1、8,所以总共 55 3 = 75553=75 个

#include <cstdio>
#include <cstring>
using namespace std;
char st[100];
int main() {
    scanf("%s", st);
    int n = strlen(st);
    for (int i = 1; i <=n; ++i) {
        if (n % i == 0) {
            char c = st[i - 1];
            if (c >= 'a')
                st[i - 1] = c - 'a' + 'A';
        }
    }
    printf("%s", st);
    return 0;
}

在这里插入图片描述
正解:B
18 拥有 66个因数:1,2,3,6,9,18
在这里插入图片描述
(计数排序)计数排序是一个广泛使用的排序方法。下面的程序使用双关键字计数排序,对 n 对 10000 以内的整数,从小到大排序。

例如有三对整数(3,4)、(2,4)、(3,3),那么排序之后应该是(2,4)、(3,3)、(3,4)。

输入第一行为 nn,接下来 nn 行,第 ii 行有两个数 a[i] 和 b[i],分别表示第 ii 对整数的第一关键字和第二关键字。

数据范围 1 \leq n \leq 10^7, 1 \leq a[i], b[i] \leq 10^41≤n≤10
7
,1≤a[i],b[i]≤10
4

提示:应先对第二关键字排序,再对第一关键字排序。数组 ord_____ 存储第二关键字排序的结果,数组 res_____ 存储双关键字排序的结果。

试补全程序

#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 10000000;
const int maxs = 10000;

int n;
unsigned a[maxn], b[maxn],res[maxn], ord[maxn];
unsigned cnt[maxs + 1];
int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; ++i)
        scanf("%d%d", &a[i], &b[i]);
    memset(cnt, 0, sizeof(cnt));
    for (int i = 0; i < maxs; ++i); // 利用 cnt 数组统计数量
    for (int i = 0; i < n; ++i)
        cnt[i + 1] += cnt[i];
    for (int i = 0; i < n; ++i); // 记录初步排序结果
    memset(cnt, 0, sizeof(cnt));
    for (int i = 0; i < n; ++i); // 利用 cnt 数组统计数量
    for (int i = 0; i < maxs; ++i)
        cnt[i + 1] += cnt[i];
    for (int i = n - 1; i >= 0; --i)// 记录最终排序结果
    for (int i = 0; i < n; i++)
        printf("%d %d",);

    return 0;
}

在这里插入图片描述
正解:B
此处实现的功能应该为统计 b[i]的数量
在这里插入图片描述
正解:D
此时实现的功能为按 b排序,记录位置。
在这里插入图片描述
正解:B
此处实现的功能应该为找到排好序以后是对应的原来的第几个数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值