周末欢乐赛 - 重现

题目 A. 信息收集 B. 计算夹角 C. 单词链接 D. 一阶魔方
Time limit 1000ms 1000ms 1000ms 1000ms
Memory limit 256MiB 256MiB 256MiB 256MiB
输入输出 客观题 传统题 传统题 传统题
题目 E. 在线排序
Time limit 1000ms
Memory limit 256MiB
输入输出 传统题

A. 信息收集

客观题

本题仅用来收集信息,请按要求填写提交,提交之后得分为 0 分是正常的 ~


姓名:{{ input(1) }}

身份证号:{{ input(2) }}

B. 计算夹角

传统题 1000ms 256MiB

题目描述

小 A 与小 B 站在同一个位置,分别面向了一个方向。方向用一个角度值标识,范围是 03600\sim 360(显然 360360 度和 00 度是同一个位置)。小 A 面向了 aa 角度,小 B 面向了 bb 角度。请你计算出两个人面朝方向的夹角大小。

比如当 a=45,b=90a=45,b=90 的时候,两个人朝向如下图所示,夹角大小为 4545

注意:显然你至少可以认为两个朝向的夹角有内外两种(比如上述例子,你也可以认为夹角是 315315),本题需要你输出大小在 01800\sim 180 范围内的那个夹角。

输入格式

一行空格隔开的两个整数 a,ba,b

输出格式

一行一个整数,表示夹角大小。

45 90
45
315 90
135

样例 2 解释

90 360
90
359 0
1

数据规模与约定

2020 组测试点,对于所有数据保证 0a,b3600\le a,b \le 360

  • 测试点 121\sim 2 满足:a=ba=b.
  • 测试点 363\sim 6 满足:a>ba>bab180a - b \le 180.
  • 测试点 7127\sim 12 满足:0a,b1800\le a,b\le 180.
  • 测试点 132013\sim 20 没有特殊限制

C. 单词链接

传统题 1000ms 256MiB

题目描述

小 A 决定用 nn 个单词命名一个变量,所有单词都是由纯小写字母组成的。他通过学习认识了三种常见的变量名命名方法:

  • 方法 1:把 nn 个单词用下划线连接在一起。
  • 方法 2:把 nn 个单词的首字母都大写,然后直接连接在一起
  • 方法 3:把第 2n2\sim n 个单词的首字母大写,然后连接在一起

比如当他选择的三个单词分别是:applebananacpp 的时候,三种命名法对应的结果分别为:

  • 方法 1:apple_banana_cpp
  • 方法 2:AppleBananaCpp
  • 方法 3:appleBananaCpp

请你写一个程序,帮他把给定的 nn 个单词,按照指定的方法组成变量名!

输入格式

第一行为空格隔开的两个整数 n,mn,m,分别表示单词的数量和指定的命名方法。

接下来一行为空格隔开的 nn 个字符串,为对应的 nn 个单词。

输出格式

一行一个字符串,为加工后的变量名。

3 3
a b c
aBC
1 2
apple
Apple
1 1
x
x

数据规模与约定

  • 对于 30%30\% 的数据,n=1n = 1
  • 对于另外 30%30\% 的数据,每个单词长度=1\text{每个单词长度} = 1
  • 对于 100%100\% 的数据,保证 1n1001\le n \le 1001每个单词长度81\le \text{每个单词长度} \le 8

D. 一阶魔方

传统题 1000ms 256MiB

题目描述

显然,一阶的魔方就是个骰子。

如上图所述,允许三种旋转方法:

  • U:从上方看着骰子顶面,把整个骰子顺时针转 9090
  • F:从前方看向骰子正面,把整个骰子顺时针转 9090
  • R:从右方看向骰子右面,把整个骰子顺时针转 9090

现在规定骰子标准摆放方法(上图中摆放方法)的“顶、底、左、右、正、背”六面分别为:1,6,2,5,3,4

给你一个骰子的某种摆放方法,请你使用 U,F,R 上述三种旋转方法,用不超过 100100 步(每次旋转为一步)来将其恢复到标准摆放方法。

输入格式

一行六个空格隔开的整数,分别表示你拿到的骰子的 “顶、底、左、右、正、背” 六面对应的数字。

输出格式

一行一个长度不超过 100100 的字符串,表示操作序列。

显然有多种操作方案,你只需要输出其中任意一种即可。

注意: 如果一开始就是标准摆放方法,输出一个空行即可(当然你也可以输出 UUUU)。

1 6 2 5 3 4

1 6 5 2 4 3
UU

样例 2 提示

这只是其中一种操作方法。只要能恢复标准摆放,你用其他的方法也可以。

数据规模与约定

对于 30%30\% 的数据,保证给你的骰子顶面为 11

对于另外 30%30\% 的数据,保证只需要使用三种旋转方法中的一种,重复若干次,就可以恢复标准摆放。

对于 100%100\% 的数据,保证给你的骰子可以恢复到标准摆放。

E. 在线排序

传统题 1000ms 256MiB

题目描述

小 A 想要生成一个数列!

目前他已有 nn 个整数 a1ana_1\sim a_n,他希望再添加 mm 个数到数列中,他会按照下面的方式一个一个地添加:

  • 先找到当前所有整数的中位数 midmid,然后添加 (mid×mid)%P(mid\times mid)\% P 到数列中。
  • PP 为一个已知的整数,%\% 为取余)。

最终小 A 会得到一个长度为 n+mn+m 的数列,如果输出这么大的数列太费时间了,因此他希望你告诉他所有数之和对 PP 取余后的值。

本题中位数的定义:对于 lenlen 个元素的序列,将其从小到大排列后,第 len+12\lfloor \frac{len+1}{2} \rfloor 个元素即中位数。 \lfloor\ \rfloor 的意思是下取整。

输入格式

第一行为空格隔开的两个整数 n,m,Pn,m,P
接下来一行 nn 个整数,即 a1ana_1\sim a_n

输出格式

一行一个整数,为”最终 n+mn+m 个数之和”对 PP 取余后的结果。

4 4 998244353
1 2 3 4
48 

样例 1 解释

  • 1 2 3 4 中位数为 2,新添加的数为 4
  • 1 2 3 4 4 中位数为 3,新添加的数为 9
  • 1 2 3 4 4 9 中位数为 3,新添加的数为 9
  • 1 2 3 4 4 9 9 中位数为 4,新添加的数为 16
  • 最终序列为:1 2 3 4 4 9 9 161+2+3+4+4+9+9+16=481+2+3+4+4+9+9+16=48,所以输出 48%998244353=4848\%998244353 = 48

数据规模与约定

对于所有数据,保证 1ai1061\le a_i\le 10^6P=998244353P=998244353

  • 子任务 1(25 分):1n,m20001\le n,m\le 2000
  • 子任务 2(25 分):1n,m1041\le n,m\le 10^4
  • 测试点 3(25 分):1n,m1061\le n,m\le 10^6
  • 测试点 4(25 分):n=1n=11m10121\le m\le 10^{12}