免责声明

本文档不提供代码,仅提供简化题意或翻译题意以及题目解法描述,不违反学校与课程的相关规定。

本文档仅供参考,不保证信息的准确性、有效性、及时性和完整性,对于使用或未能使用本文档内容所导致的任何损害,作者不承担任何责任

简介(必读)

文档同步发表在我的 洛谷专栏,由于洛谷专栏有目录所以建议在洛谷专栏页面阅读。

前言:由于 HNU 的 ACM 课程平时成绩要求在 OJ 上刷 50 题,而 OJ 和上面的题目存在诸多问题,笔者被恶心得无以复加。为了同学们的心理健康,笔者在文档中整理了 OJ 上相对简单的 50 题帮助各位拿到课程平时分。

警告:由于 OJ 的部分题目存在极其荒谬的错误,例如有多组测试数据而不在题面和样例中声明错误的测试数据以及极慢的评测机(已经使用约 20 年,某些情况下比洛谷评测机慢将近 500 倍),因此——请读者在做题前阅读本文档题目对应部分的警告

须知:由于 OJ 长期无人维护,需要注意以下事项。

  • 湖南大学 OJ 仅可使用湖南大学校园网访问
  • “万能头文件”bits\stdc++.h 不可用,会导致编译错误。
  • C++98 版本后加入的库以及函数、语法不可用,例如 std::string 类的 pop_back 函数,同样会导致编译错误。
  • 评测机不支持 Python 语言。
  • 评测机的反馈除了 Accepted、Wrong Answer、Compile Error、Time Limit Exceeded、Memory Limit Exceeded、Runtime Error 外还存在 Presentation Error(输出格式错误),这种情况一般是输出了多余的空格或换行符导致的。例如输出 $3$ 个用空格隔开的数字 1、2、3,不换行。应当输出 1 2 3 而不是 1 2 3 ,数字 3 后面的多余空格可能导致评测机返回 Presentation Error,请注意并非每道题的输出格式要求都很严格,读者只有在出现 PE 结果时需要考虑输出格式问题

对于有多组测试数据的题目,如果不给定测试数据数量,那么可以采用以下方式读入。例如,每组测试数据输入一个整数 $n$,保证 $n$ 不超过 int 可表示的范围。

第一类实现

int main(){
    int n;
    while(cin>>n){
        //do something
    }
    return 0;
}

第二类实现

int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        //do something
    }
    return 0;
}

本文档中如未特殊说明,数组、字符串等序列的下标一律从 $1$ 开始

第 1 题:A+B Problem

给定整数 $a,b$,输出它们的和。

题目链接

做法略。

第 2 题:A*B Problem

给定整数 $a,b$,输出它们的积。

题目链接

做法略。

第 3 题:A/B Problem

给定整数 $a,b$,输出它们的商向 $0$ 舍入后的值(即 C++ 中 a/b 的值)。

题目链接

做法略。

第 4 题:谁拿了最多奖学金

本题和洛谷 P1051 完全相同,请读者自行学习并完成。

题目链接

做法略。

第 5 题:Recaman's Sequence

使用 $a_i$ 表示 Recaman 序列的第 $i$ 项,已知 $a_0 = 0$。

对于 $i \geq 1$ 的整数 $i$,若 $a_{i-1} - i \geq 0$ 且 $a_{i-1} - i$ 这个数没有在 $a_0 \sim a_{i-1}$ 出现过,那么 $a_i = a_{i-1} - i$,否则 $a_i = a_{i-1} + i$。

给定整数 $k$,求 $a_k$ 的值,$0 \leq k \leq 5 \times 10^5$。

题目链接

使用数组 $w$ 记录某个值是否在 $a$ 中出现过,如果 $w_x = 0$ 则 $x$ 还没有在 $a$ 中出现,否则 $x$ 已经在 $a$ 中出现过。

递推序列 $a$,若 $a_{i-1} - i \geq 0$ 且 $w_{a_{i-1} - i} = 0$ 则令 $a_i = a_{i-1} - i$,否则令 $a_i = a_{i-1} + i$。得到 $a_i$ 的值之后令 $w_{a_i} = 1$,注意 $a_i$ 的值可能比 $5 \times 10^5$ 大,把 bool 类型数组 $w$ 的大小开到 $10^7$ 即可

注意递推前先令 $w_0 = 1$

第 6 题:Calendar

警告:本题容易导致高血压

给定天数 $n$,求 2000 年 1 月 1 日起经过 $n$ 天是几年几月几日星期几(包含 2000 年 1 月 1 日)。

题目链接

首先需要知道能被 $400$ 整除或能被 $4$ 整除但不能被 $100$ 整除的年份是闰年。

预处理数组 $w$,数组的元素 $w_x$ 表示从 2000 年 1 月 1 日到 $x$ 年 1 月 1 日经过的天数。题目保证答案年份不超过 9999 所以数组 $w$ 大小开到 $10^4$ 即可。

猜测 $k$ 为答案年份,如果 $w_k \leq n$ 则 $k$ 合法。二分得到的符合条件的最大的 $k$ 即答案年份。暴力计算月份和具体日期。

利用 $n$ 除以 $7$ 的余数计算 $n$ 天后是星期几(2000 年 1 月 1 日是星期六)。

预处理的时间复杂度为 $O(V)$,回答单次询问的时间复杂度为 $O(\log V)$,其中 $V$ 为答案年份值域。

第 7 题:The Triangle

本题和洛谷 P1216 的区别只是有多组数据,请读者自行学习并完成。

题目链接

做法略。

第 8 题:Self Numbers

使用 $d(x)$ 表示 $x$ 加上 $x$ 的各个位上的数字得到的值,例如 $d(123)=123 + 1 + 2 + 3 = 129$,$d(6) = 6 + 6 =12$。如果不存在满足 $d(x) = N$ 的正整数 $x$ 就称 $N$ 为 Self Number,按照从小到大的顺序输出所有大于 $0$ 小于 $10^4$ 的 Self Number,用换行符分隔。

题目链接

由于满足 $1 \leq x < 10^4$ 的 $x$ 一定满足 $d(x) > x$,所以枚举 $[1,10^4)$ 中的所有整数 $i$ 并标记 $d(i)$ 不是 Self Number 即可。标记用的数组大小最好不小于 $10^4 + 36$ 以避免数组越界

标记完毕后遍历 $[1,10^4)$ 中的所有整数 $i$,如果 $i$ 未被标记就将其输出。

第 9 题:幻方矩阵

警告:本题思维难度较大

题目链接

令 $ans_{i,j}$ 为幻方矩阵第 $i$ 行第 $j$ 列的数字,存在一种幻方的构造方法符合如下公式。

$$ans_{i,j} = \left(i+j+\left\lfloor \dfrac{n-3}{2} \right\rfloor \right) \bmod n \times n + \left( i-j + \left\lfloor \dfrac{3n-1}{2} \right\rfloor \right) \bmod n + 1$$

其中 $\bmod$ 为取模运算,即 C++ 中的 % 运算符,其算术优先级与乘除法相同。

由于题目的空间限制不能开规模较大的数组,每次当场计算 $ans_{i,j}$ 后输出即可

时间复杂度 $O(n^2)$,空间复杂度 $O(1)$。

第 10 题:Lowest Bit

给定正整数 $x$,求 $\operatorname{lowbit}(x)$ 的值。其中 $\operatorname{lowbit}(N)$ 定义为 $N$ 的二进制表示中最低位 $1$ 转化为十进制后的值。例如 $\operatorname{lowbit}(14) = 2$,$\operatorname{lowbit}(15) = 1$,$\operatorname{lowbit}(16) = 16$。

题目链接

对于 int 类型变量 $x$,$\operatorname{lowbit}(x)$ 的值为 x&-x,计算并输出即可。

第 11 题:Common permutation

给定长度不超过 $10^3$ 的且仅包含小写字母的字符串 $S_1,S_2$,求长度最长的字符串 $x$,满足如下条件。

  • 重新排列字符串 $x$ 中的字母可以使 $x$ 等于 $S_1$ 的一个子序列
  • 重新排列字符串 $x$ 中的字母可以使 $x$ 等于 $S_2$ 的一个子序列
  • 字符串 $x$ 是所有满足以上条件的字符串中字典序最小的。

概念解释

  • 子序列:定义一个字符串 $H$ 是字符串 $T$ 的子序列,当且仅当 $H$ 能够由 $T$ 删除若干字符后获得(可以一个字符都不删除,也可以全删除后得到空子序列)。
  • 字典序:对于两个同样长度的字符串 $s = s_1s_2\cdots s_L$ 和 $t = t_1t_2 \cdots t_L$,称字符串 $s$ 字典序小于字符串 $t$,当且仅当以下条件成立:存在位置 $i$,在第 $i$ 个字符之前 $s$ 和 $t$ 都相同,而且 $s_i < t_i$,即小写字母 $s_i$ 在英文字母顺序中先于 $t_i$。

题目链接

对于字母 $c$,如果其在字符串 $S_1$ 中的出现次数为 $w_1$,在字符串 $S_2$ 中的出现次数为 $w_2$,那么其至多可以在字符串 $x$ 中出现 $\min(w_1,w_2)$ 次,对每种字母计算其最大出现次数,然后按照 $\texttt{a} \sim \texttt{z}$ 的顺序输出相应数量的字母能够保证字典序最小。

第 12 题:IP Address

给定 $n$ 组询问,每组询问给出一个长度为 $32$ 的 $\texttt{01}$ 串,其中每 $8$ 个字符为一组,每组字符表示一个二进制数。

计算每个 $\texttt{01}$ 串对应的 IP 地址。具体地,对于每组询问输出一行,令第 $i$ 组字符表示的二进制数的十进制表示为 $ans_i$,按顺序输出 $ans_1 \sim ans_4$,用字符 . 分隔。

题目链接

读入字符串之后计算 $ans_1 \sim ans_4$ 的值,然后按照指定格式输出。

不会计算 $ans$ 的值的读者请自行学习进制转换相关内容

第 13 题:Jolly Jumpers

对于一个长度为 $n$ 的序列,如果序列中每一对相邻元素的差的绝对值能够构成一个 $1 \sim n-1$ 的排列,就认为这个序列是 Jolly 的;否则这个序列是 Not jolly 的,给定若干个序列,判断每个序列是否是 Jolly 的。

题目链接

枚举每一对相邻元素,如果有一对元素的差的绝对值不属于 $[1,n-1]$ 那么序列是 Not jolly 的。

再次枚举每一对相邻元素,使用 $x_i$ 表示 $|a_i - a_{i+1}|$ 的值。使用数组 $w$ 的元素 $w_j$ 记录是否存在 $x_i = j$。枚举所有 $x_i$ 并令 $w_{x_i} = 1$,枚举完毕后若 $w_1 \sim w_{n-1}$ 的值都为 $1$ 那么序列是 Jolly 的,否则序列是 Not jolly 的。

第 14 题:Sum

对于正整数 $n$,可以通过将 $1 \sim n$ 写出,然后选择一些数(可以选择任意多个数,也可以不选),在这些数前面添加负号,然后再将写出的所有数相加得到一些数。

例如,对于 $n=7$ 的情况,首先写出 $1 \sim 7$ 的所有数字。

$$1,2,3,4,5,6,7$$

选择一些数字,在前面加上负号。

$$-1,2,3,4,5,6,-7$$

求和。

$$(-1) + 2 + 3 + 4 + 5 + 6 + (-7) = 12$$

因此,称 $7$ 是可构造 $12$ 的。给定正整数 $S$,求可构造 $S$ 的最小的正整数 $n$,$1 \leq S \leq 10^5$。

题目链接

从小到大枚举自然数 $n$,如果 $\sum\limits_{i=1}^{n} i < S$,那么 $i$ 必定无法构造 $S$。

否则,若 $\sum\limits_{i=1}^{n} i - S$ 的值为偶数,当前的 $n$ 就是最小的可构造 $S$ 的正整数。

时间复杂度 $O(S)$。

第 15 题:Server

给定一个网址,输出其服务器。

例如 http://www.monkey.donkey.zebra.com 的服务器为 www,而 ftp://newton.cs.colorado.edu 的服务器为 newton即按顺序输出所有在 // 与它之后的第一个 . 之间的字符

输出前固定要有 server: 这些字符,注意其中包含的空格

题目链接

做法略。

第 16 题:Faulty Odometer

有一种不包含数字 $4$ 的计数规则,其只有 $0,1,2,3,5,6,7,8,9$ 共 $9$ 个数字。这种技术规则从 $1$ 数到 $15$ 是这样的,$1,2,3,5,6,7,8,9,10,11,12,13,15$,总共数了 $13$ 下。

给定数字 $n$,求按照上面的计数规则从 $1$ 数到 $n$ 要数多少下。

题目链接

将 $n$ 中的 $5$ 替换为 $4$、$6$ 替换为 $5$、$7$ 替换为 $6$、$8$ 替换为 $7$、$9$ 替换为 $8$。

问题转化为求九进制数 $n$ 的十进制表示。注意输出中包含的空格

第 17 题:Sorting by Swapping

给定一个 $1 \sim n$ 的排列 $p$,每次可以交换排列中的两个数字,求让排列满足 $p_i = i$ 的最小交换次数。

概念解释

排列:包含 $n$ 个数,并且包含 $[1,n]$ 中每个整数恰好一次的序列是排列。

题目链接

枚举 $p_1 \sim p_n$,如果 $p_i \neq i$ 就将满足 $p_j = i$ 的 $p_j$ 与 $p_i$ 交换。

需要记录值 $i$ 的位置 $ex_i$,每次交换实际上是交换 $p_i$ 和 $p_{ex_i}$,交换之后更新数组 $ex$ 中的值。

第 18 题:最大公约数

给定正整数 $n,m$ 求 $\gcd(n,m)$ 的值,其中 $\gcd(n,m)$ 为 $n$ 与 $m$ 的最大公约数。

题目链接

做法略。

不会计算最大公约数的读者请自行学习数论相关内容

第 19 题:2^x mod n = 1

给定正整数 $n$,求最小的满足 $2^x \bmod n = 1$ 的正整数 $x$,或者判断不存在这样的正整数。

题目链接

如果 $n$ 等于 $1$ 或 $n$ 是 $2$ 的倍数,那么无解。

否则从 $1$ 开始枚举 $x$ 的值,第一个满足条件的 $x$ 即答案。

时间复杂度 $O(n)$,因为 $n$ 的范围小可以通过。

第 20 题:津津的储蓄计划

本题与洛谷 P1089 完全相同,请读者自行学习并完成。

题目链接

做法略。

第 21 题:简单的归并

给定两个非递减序列,将它们合并为一个非递减序列。

题目链接

每次比较两个序列的第一个元素,将更小的元素从其所在序列中删除并输出。

时间复杂度 $O(n)$。

第 22 题:Palindrome

给定若干个字符串,判断每个字符串是不是回文。

概念解释

回文:从左向右读和从右向左读得到的结果相同的字符串是回文。

题目链接

对于长度为 $n$ 的字符串 $s$,若存在正整数 $i$ 满足 $s_i \neq s_{n-i+1}$ 那么 $s$ 不为回文;否则 $s$ 是回文。

第 23 题:进击的大学生

给定 $a,b$ 求 $a+b$ 的值,多测。

题目链接

做法略。

第 24 题:Annie's Bear

给定整数 $n,m,k$ 判断 $n+m \geq k$ 是否成立。

题目链接

做法略。

第 25 题:实验D——两个数的互素判定

给定正整数 $a,b$ 判断 $a,b$ 是否互质。

题目链接

若 $\gcd(a,b) = 1$ 那么 $a,b$ 互质。注意要开 long long 类型变量

时间复杂度 $O(\log V)$,其中 $V$ 为 $a,b$ 的值域。

第 26 题:青姬の爱恋

警告:本题有多组测试数据并且未在题面中说明

警告:本题有多组测试数据并且未在题面中说明

警告:本题有多组测试数据并且未在题面中说明

警告:本题有多组测试数据并且未在题面中说明

警告:本题有多组测试数据并且未在题面中说明

给定正整数 $n$,保证 $n$ 是两个质数的乘积,找到这两个质数中较大的数。

题目链接

令这两个质数为 $p,q$(其中 $p<q$),那么必定有 $p \leq \sqrt{n}$,枚举 $2 \sim \sqrt{n}$ 中的整数找到 $p$,通过 $q = \dfrac{n}{p}$ 求出 $q$ 的值。

时间复杂度 $O(\sqrt{n})$。

第 27 题:Fibonacci Number

斐波那契数列 $f$ 的递推式如下。注意本题中数列下标从 $0$ 开始

$$f_i = \begin{cases} 0 & i = 0 \\ 1 & i=1 \\ f_{i-2} + f_{i-1} & i \geq 2 \end{cases}$$

给定非负整数 $n$,求 $f_n$ 的值。

题目链接

做法略。

第 28 题:Word Reversal

给定字符串 $s$,输出将其左右翻转得到的字符串。

题目链接

做法略。

第 29 题:Palindromes

给定包含大写字母和小写字母的字符串 $s$,判断其是否是回文(大小写不敏感)。

题目链接

将 $s$ 中的大写字母修改为对应的小写字母,然后套用第 22 题的做法。

第 30 题:Number lengths

给定正整数 $n$,求 $n!$ 有多少个数位,$1 \leq n < 10^6$。

题目链接

预处理答案,开一个大于 $10^6$ 的 double 类型数组 $sum$,初始化 $sum_i = \log_{10} i$,然后对 $sum_1 \sim sum_{10^{6}}$ 做一遍前缀和。建议使用 cmath 头文件中的 log10 函数

若 $n=1$ 那么答案为 $1$;否则答案为 $\left\lceil sum_n \right\rceil$,向上取整建议使用 cmath 头文件中的 ceil 函数

第 31 题:Recurrence Relations

给定下列递推式。

$$g_i = \begin{cases} 1 & i = 1 \\ 0 & i = 2 \\ 1 & i = 3 \\ g_{i-3} + g_{i-1} & i \geq 4 \end{cases}$$

$$f_i = \begin{cases} 1 & i = 1 \\ f_{i-1} + g_{i-1} & i \geq 2 \end{cases}$$

给定正整数 $n$,求 $f_n$ 的值。

题目链接

做法略。

第 32 题:置换排列

给定长度为 $n$ 的排列 $p$,判断其是否是置换排列。

如果排列 $p$ 对于 $[1,n]$ 中的每个整数 $i$ 都满足 $p_{p_i} = i$,就认为 $p$ 是一个置换排列。

题目链接

做法略。

第 33 题:Speed Limit

给定 $n$ 条信息,每条信息包含两个正整数 $a_i,b_i$,计算 $\sum\limits_{i=1}^{n} a_i (b_i - b_{i-1})$,这里认为 $b_0 = 0$。

题目链接

做法略。

第 34 题:1, 10, 100, 1000...

有一个由 $10$ 的正数次幂从左到右拼接而成的无限序列,它的前几项为 $\texttt{110100100010000}$,给定正整数 $n$,求序列的第 $n$ 个数是 $\texttt{0}$ 还是 $\texttt{1}$,$1 \leq n < 2^{31}$。

题目链接

序列第 $i$ 个 $\texttt{1}$ 的位置是 $\dfrac{i(i-1)}{2} + 1$,是 $i^2$ 等级的。因此可以预先计算出所有位置小于 $2^{31}$ 的 $\texttt{1}$ 的位置并标记,建议使用 map 头文件中的 map<int,bool> 进行标记

注意超出 $2^{31}$ 的位置会爆 int,计算过程中要使用 long long 类型,而被标记的数必定小于 $2^{31}$,使用 int 类型足矣。

每次询问的 $n$ 如果被标记则答案是 $\texttt{1}$;否则答案是 $\texttt{0}$。

预处理的时间复杂度为 $O(\sqrt{n} \log n)$,回答单次询问的时间复杂度为 $O(\log n)$。

第 35 题:Reduced ID Numbers

给定长度为 $n$ 的序列 $a$,找到最小的正整数 $m$ 使得 $a_1 \sim a_n$ 对 $m$ 取余的结果两两不同。

$1 \leq n \leq 300$,$0 \leq a_i < 10^6$。

题目链接

对于正整数 $m$,$a_i \bmod m \neq a_j \bmod m$ 当且仅当 $|a_i - a_j| \bmod m \neq 0$,首先计算并标记所有 $|a_i - a_j| \ (i \neq j)$ 的值。

从 $1$ 开始枚举 $m$ 可能的取值,然后枚举 $m$ 的所有倍数,第一个没有倍数被标记的 $m$ 即答案。

时间复杂度 $O(n^2 + V \log V)$,其中 $V$ 为 $a_i$ 的值域。

第 36 题:Adjacent Difference

给定长度为 $n$ 的序列 $a$,按以下规则生成序列 $b$ 后按顺序输出序列 $b$ 的元素。

  • 令 $b_1 = a_1$。
  • 令 $b_i = b_i - b_{i-1}$,其中 $2 \leq i \leq n$。
  • 将序列 $b$ 中的元素从小到大排序。

输出第 $T$ 组测试数据的序列 $b$ 之前输出 Case T: 并换行。

题目链接

做法略。

第 37 题:合并果子

本题与洛谷 P1090 完全相同,请读者自行学习并完成。

题目链接

做法略。

第 38 题:回国探亲

给定长度为 $n$ 的序列 $a$,求下列式子的值。$1 \leq n \leq 500$。

$$\min\limits_{i=1}^{i=n} \left( \sum\limits_{j=1}^{j=n} |a_i - a_j| \right)$$

题目链接

由于 $n$ 的值比较小,枚举 $a_i$ 计算并取 $\min$ 即可。

第 39 题:高级模运算

题目链接

使用快速幂计算答案,注意运算过程中要开 long long 类型变量,本题对程序效率要求较高,请读者尽量减少开销较大的取模运算次数,可以将所有 $a_i^{b_i} \bmod m$ 的值累加进一个 long long 类型变量,最后输出这个变量对 $m$ 取模的值

时间复杂度 $O(n \log V)$,其中 $n$ 为人数,$V$ 为 $b_i$ 的值域。

不会快速幂的读者请自行学习数论相关内容

第 40 题:SDEX Code

题目链接

做法略。

第 41 题:Dr. Firepot

给定正整数 $n,m$,如果 $n \geq m$ 输出 MMM BRAINS;否则输出 NO BRAINS

题目链接

做法略。

第 42 题:字符串的修改

本题严格弱于洛谷 P2758,请读者自行学习并完成。

题目链接

做法略。

第 43 题:Hamming Distance

定义正整数 $n,m$ 的 Hamming Distance 为它们二进制表示中不同的位的数量。

给定 $n,m$ 求 $n,m$ 的 Hamming Distance。

题目链接

求出 $n \oplus m$ 的二进制表示中有多少位为 $1$ 即可,其中 $\oplus$ 为异或运算,在 C++ 中使用运算符 ^ 表示。注意由于 $1 \leq n,m < 2^{64}$,需要使用 unsigned long long 类型变量存储 $n,m$ 的值

使用 __builtin_popcountll 函数计算 n^m 的二进制表示中 $1$ 的数量。

第 44 题:幸运儿

题目链接

使用链表模拟游戏过程,直到链表中只剩下两个元素即可。

不会链表的读者请自行学习链表相关内容

第 45 题:Holiday Hotel

给定 $n$ 个宾馆的信息,每个宾馆的信息为两个正整数 $a_i,b_i$,其中 $a_i$ 表示宾馆与海的距离,$b_i$ 表示宾馆的价格。计算符合如下条件的宾馆数量。

  • 比这个宾馆距离海更近的宾馆价格全部高于这个宾馆的价格。
  • 比这个宾馆价格更低的宾馆与海的距离全部比这个宾馆更远。

题目保证不存在正整数 $i,j \ (i \neq j)$ 使得 $a_i = a_j$ 或 $b_i = b_j$,$1 \leq n \leq 10^4$。

题目链接

使用结构体记录宾馆编号、价格和与海的距离。使用数组 $w$ 记录宾馆符合的条件数量。

首先按照与海的距离从小到大排序。

维护前缀价格最小值,如果当前宾馆的价格小于当前宾馆之前所有宾馆价格的最小值,那么它符合第一个条件,如果当前宾馆的编号为 $i$ 就令 $w_i$ 增加 $1$。

然后按照价格从小到大排序。

维护前缀距离最小值,如果当前宾馆的距离小于当前宾馆之前所有宾馆距离的最小值,那么它符合第二个条件,如果当前宾馆的编号为 $i$ 就令 $w_i$ 增加 $1$。

遍历 $w_1 \sim w_n$,如果 $w_i = 2$ 那么答案增加 $1$。

时间复杂度 $O(n \log n)$。

第 46 题:Factorials Again

给定正整数 $n$,求 $n!$ 最低的非 $0$ 位上的值。

例如,$5! = 120$,所以 $n=5$ 时答案为 $2$;$7! = 5040$,所以 $n=7$ 时答案为 $4$。

题目链接

维护乘积 $mul$,最初 $mul=1$。枚举 $[1,n]$ 中的所有正整数。

对于正整数 $i$,首先将 $mul$ 乘上 $i$,如果 $mul$ 是 $10$ 的倍数就不断将 $mul$ 除以 $10$ 直到 $mul$ 不是 $10$ 的倍数。然后将 $mul$ 对 $10^9$ 取模,即只保留 $mul$ 的后 $9$ 位。

枚举完成后 $mul \bmod 10$ 即为答案。

第 47 题:检查金币

题目链接

做法略。

第 48 题:What’s Cryptanalysis?

给出一个 $n$ 行的文章,统计其中每个英文字母的出现次数,不区分大小写。输入的行可能为空,也可能包含空格。

将英文字母按照出现次数为第一关键字、字典序为第二关键字排序后输出对应的大写字母和出现次数,未出现的英文字母不输出。

题目链接

使用 getline(cin,s) 将输入的一个行读入 string 类变量 s 中。

注意 getline 以回车键判定结束,所以 cin>>n 之后需要一次 getline 读入第一行的回车

统计字符出现次数,排序后输出即可。

第 49 题:Pairs

给定 $n$ 个正整数,判断能否将这些数两两配对,每对数的和都相等。

$2 \leq n \leq 100$,给定正整数的值不超过 $1000$。

题目链接

如果 $n$ 为奇数或所有数字的和 $S$ 不是 $\dfrac{n}{2}$ 的倍数,显然无解。

否则维护数组 $w$,使用 $w_i$ 表示值 $i$ 的出现次数,执行以下操作 $\dfrac{n}{2}$ 次。

  • 找到最小的满足 $w_i \geq 0$ 的整数 $i$,将 $w_i$ 减去 $1$。
  • 若 $w_{\frac{2 S}{n} - i} =0$ 则判定无解,否则将 $w_{\frac{2 S}{n} - i}$ 减去 $1$。

执行完毕 $\dfrac{n}{2}$ 次操作后判定有解。

时间复杂度 $O(nV)$,其中 $V$ 为给定正整数的值域。

第 50 题:Jack's problem

给定 $n$,输出 $\dfrac{n \pi}{180}$,保留三位小数。

题目链接

使用 cmath 头文件中的 M_PI 常量即可。

后记

如果这篇文档对你有帮助,你又恰好有个洛谷账号的话,不妨发条评论,笔者得知自己的文档有用会很开心的。

最后修改:2024 年 12 月 19 日
如果觉得我的文章对你有用,请随意赞赏