C. C. Blog

Security Research, Algorithm and Data Structure

Problem

一个集合包含一组相互不同的数字。现在我们要去寻找一个集合,他要满足如下性质:

对于所有 𝑥(𝑥∈𝑆) ,要满足l ≤ x ≤ r;

1 ≤ |S| ≤ k;

设S中第i个元素是 𝑠𝑖 ;那么 𝑓(𝑆)=𝑠1 ⨁ 𝑠2 ⨁ ... ⨁ 𝑠|𝑆| 的值要尽可能小。

阅读全文 »

Problem

有一个数组a,长度为n,下标从1开始。现在要对a进行m次排序,每一次排序给定两个参数t[i],r[i]表示要对数组的前r[i]个元素进行排序,如果t[i]=1则按照非降序排序,t[i]=2则按照非升序排序。

请输出经过m次排序之后的数组a。

样例解释:

第一个样例中,初始序列为:1 2 3。经过第一次排序之后变成了:2 1 3。

第二个样例中,初始序列为:1 2 4 3。经过第一次排序之后变成了:4 2 1 3。经过第二次排序之后变成了:2 4 1 3。

阅读全文 »

Problem

一个车牌号由n位数字组成。如果一个车牌至少有k位数字是相同的,那么我们就说这个车牌漂亮的车牌。现在华沙想要改变他自己的车牌,使得他的车牌变得漂亮。当然,改车牌是要花钱的。每改变一位数字所要花费的费用等于当前位上的新旧数字之差的绝对值。那么总费用就是每位上所花费用的总和。

举例如下,

旧牌为0123,新牌为7765,那么对应第一位所花费用为|0-7|=7,第二位为|1-7|=6,第三位为|2-6|=4,第四位为|3-5|=2,总和为7+6+4+2=19

华沙想用最少的钱,使他的车牌变得漂亮起来。现在给定n,k,和旧牌的号码,计算换牌的最少费,以及新牌的号码,

如果最少费用的号码有多个,我们取字典序最小的那个。

样例解释:

在样例中,把第二个数字换成“8”花费|9-8|=1,把第五个数字换成“8”也花了1。

把第六个数字换成“8”花费|6-8|=2.总费用为1+1+2=4,新号码为“888188”

两个长度为n的序列比较方法如下。

存在两个序列x,y,长度都是n。

如果存在i(1≤i≤n)和任意j(1≤j<i)使得 xi<yixi<yi 并且 xj=yjxj=yj ,那么我们就说x比y小。

阅读全文 »

Problem

F(n) = (n % 1) + (n % 2) + (n % 3) + ...... (n % n)。其中%表示Mod,也就是余数。 例如F(6) = 6 % 1 + 6 % 2 + 6 % 3 + 6 % 4 + 6 % 5 + 6 % 6 = 0 + 0 + 0 + 2 + 1 + 0 = 3。 给出n,计算F(n), 由于结果很大,输出Mod 1000000007的结果即可。

阅读全文 »

Problem

数组A和数组B,里面都有n个整数。

数组C共有n^2个整数,分别是:

A[0] * B[0],A[0] * B[1] ...... A[0] * B[n-1]

A[1] * B[0],A[1] * B[1] ...... A[1] * B[n-1]

......

A[n - 1] * B[0],A[n - 1] * B[1] ...... A[n - 1] * B[n - 1]

是数组A同数组B的组合,求数组C中第K大的数。

例如:

A:1 2 3,B:2 3 4。

A与B组合成的C为

     A[0]  A[1]  A[2]

B[0] 2 3 4

B[1] 4 6 8

B[2] 6 9 12

共9个数。

阅读全文 »

Problem

设有n个正整数,将它们联接成一排,组成一个最小的多位整数。

例如: n=2时,2个整数32,321连接成的最小整数为:32132, n=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355

阅读全文 »

Problem

X是一个n位数的正整数 (𝑥=𝑎0𝑎1...𝑎𝑛−1)

现在定义 F(x)=∏𝑖=0𝑛−1(𝑎𝑖!) , 比如F(135)=1!3!5!=720.

我们给定一个n位数的整数X(至少有一位数大于1,X中可能有前导0),

然后我们去找一个正整数(s)符合以下条件:

1.这个数尽可能大,

2.这个数中不能含有数字0或1。

3.F(s)=F(x)

阅读全文 »