T1 因子素数(prime)
题目描述
小明特别喜欢素数,现在单纯的素数已经无法满足他的狂热了,他需要更多与素数相关的数!经过苦苦思考,他终于找了一种与素数相关的数——因子个数是素数的数,小明称这样的数为因子素数。
举个例子:
666 不是因子素数,因为它的因子个数为 444(包括1,2,3,61,2,3,61,2,3,6)。
999 是因子素数,因为它的因子个数为 333 (包括1,3,91,3,91,3,9)。
现在给你一个数 nnn,请你求出其中所有小于等于 nnn 的因子素数之和。
输入格式
从文件 prime.in 中读入数据
输入一个整数 nnn
输出格式
输出到文件 prime.out 中
输出一个整数,表示答案
数据范围
1≤n≤1041 \leq n \leq 10^41≤n≤104
样例数据
输入:
20
输出:
106
说明:
20以内的因子素数为2 3 4 5 7 9 11 13 16 17 19,和为106
5G通讯(comm)
题目描述
nnn 名 5G5G5G 用户在一条直线上,其中第 iii 名用户的坐标为 xix_ixi 。给定一个上界 ddd,若两名用户的距离不超过 ddd,那么他们可以直接通讯。请统计有多少对用户可以直接通讯。
输入格式
从文件 comm.in 中读入数据
第一行,两个整数表示 nnn 与 ddd。
第二行,nnn 个整数,表示 x1,x2,…,xn。x_1,x_2,\dots,x_n 。x1,x2,…,xn。
输出格式
输出到文件 comm.out 中
单个整数:表示有多少对用户可以直接通讯。
数据范围
对于 30% 的数据,1≤n≤10001\leq n \leq 10001≤n≤1000;
对于 70% 的数据,1≤n≤10,0001\leq n \leq 10,0001≤n≤10,000;
对于 100% 的数据,1≤n≤100,0001\leq n \leq 100,0001≤n≤100,000,
1≤d≤1,000,000,0001 \leq d \leq 1,000,000,0001≤d≤1,000,000,000,
1≤xi≤1,000,000,0001 \leq x_i \leq 1,000,000,0001≤xi≤1,000,000,000
样例数据
输入:
4 25
10 20 30 40
输出:
5
说明:
(10,20)(20,30)(30,40)(10,30)(20,40)(10,20) (20,30) (30,40) (10,30) (20,40)(10,20)(20,30)(30,40)(10,30)(20,40)
T3 放置拼块(block)
题目描述
小爱有很多 2×22 \times 22×2 的积木拼块,现在她打算在一个 n×mn \times mn×m 的底板上,铺上数量若干的积木拼块,拼块之间不能重合。底板上可能已经存在一些拼块,具体位置由输入给定。请统计小爱有多少种放置拼块的方法。
举例来说,假设在一个 3×43 \times 43×4 的蓝色底板上,已经存在一个拼块(以红色表示):

那么继续放置只有三种可能:

第一种是不放置新的拼块,第二、第三种可能方案是在绿色部分放置一块拼块。由于底板的大小有限,没有办法放置更多的拼块。
输入格式
从文件 block.in 中读入数据
第一行:三个正整数 nnn,mmm 与 kkk;
接下来 kkk 行,每行两个整数 xix_ixi 与 yiy_iyi ,表示一个已经存在的拼块,(xi,yi)(x_i,y_i)(xi,yi) 表示该拼块的左上角位置。
输出格式
输出到文件 block.out 中
单个整数:表示放置拼块的方案数。
数据范围
1≤n,m≤81 \leq n,m \leq 81≤n,m≤8,0≤k≤160 \leq k \leq 160≤k≤16
样例数据
输入:
3 4 1
2 3
输出:
3
说明:
即题干中的例子
输入:
3 4 0
输出:
11
T4 旋转减半数(rotate)
题目背景
842105263157894736842105263157894736842105263157894736 是一个很有趣的数字,因为如果将第一位数字 888 移动到最后,可以得到 421052631578947368421052631578947368421052631578947368,恰好是原来数字的一半。这样旋转后恰好减半的数字在其他进制中也存在。比如在二进制下,101010101010 就是一个旋转后减半的数字:
(1010)2=(0101)2+(0101)2(1010)_2 = (0101)_2 + (0101)_2(1010)2=(0101)2+(0101)2
题目描述
给定一个正整数 bbb,请求出 bbb 进制下最小的旋转减半数,所谓旋转减半数,就是将第一位数字移动到最后一位后,得到的新数字恰好在 bbb 进制下为原数字大小的一半。
如果不存在这样的数字,输出 NoneNoneNone。
输入格式
从文件 rotate.in 中读入数据
单个整数表示 bbb。
输出格式
输出到文件 rotate.out 中
若干个自然数,每个数字表示一位数字,每位数字在 000 到 b−1b-1b−1 之间,第一位不能为 000,每个数字间有一个空格。若不存在这样的数字,输出 None。
数据范围
对于 30% 的数据,2≤b≤102\leq b\leq 102≤b≤10;
对于 60% 的数据,2≤b≤2002\leq b\leq 2002≤b≤200;
对于 100% 的数据,2≤b≤20002\leq b\leq 20002≤b≤2000。
样例数据
输入:
2
输出:
1 0
输入:
10
输出:
1 0 5 2 6 3 1 5 7 8 9 4 7 3 6 8 4 2
T5 最长锯齿子序列
题目描述(sequence)
给定 nnn 个整数组成的序列 a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1,a2,⋯,an ,请从中挑出尽量长的子序列,形成一个锯齿序列。所谓锯齿序列,就是它的差分序列(由相邻数字的差组成的序列)是正负交替的。为了避免差为 000 时不方便区分正负,保证给定的每个数字都不相同。例如给定的序列是 1,3,5,2,4,6,那么它的子序列 1,5,2,6 是一个锯齿序列,因为它的差分序列是 4,−3,44,-3,44,−3,4;而 1,3,51,3,51,3,5 不是,因为这三个数字是递增的。
输入格式
从文件 sequence.in 中读入数据
第一行:一个整数 nnn
第二行:nnn 个整数 a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1,a2,⋯,an
输出格式
输出到文件 sequence.out 中
单个整数:表示最长的锯齿子序列长度
数据范围
对于30%的数据:1≤n≤101\leq n\leq 101≤n≤10
对于60%的数据:1≤n≤1031\leq n\leq 10^31≤n≤103
对于100%的数据:1≤n≤1041\leq n\leq 10^41≤n≤104,1≤ai≤1051\leq a_i\leq 10^51≤ai≤105
样例数据
输入:
6
1 3 5 2 4 6
输出:
4
798

被折叠的 条评论
为什么被折叠?



