比赛地址:牛客周赛 Round 101
出题人:Silencer76
A 题解的token计算
按照题目给的公式计算,输出就好。
部分同学并不知道库函数的 函数是以
e
为底的,于是用上了换底公式。
参考代码
B 76修地铁
简单模拟题,运用一些整型除法的性质。
在计算动力铁轨消耗量的时候,可以用 快速计算。
参考代码
C 76选数
如果排列里存在 ,那么一定存在小于等于他的数字。
这句话看起来是废话,其实不然。
如果存在这些数字,那么一定能从中挑出一些 的幂次,把二进制里的
补成
。
除非 本身的二进制就已经全是
。
补完之后,加上 就变成大于
的第一个
了。
所以,我们反过来,先找到这个 ,然后减去
。
参考代码
D 76构造
和C题差不多,这次不是挑 位,而是
位。
找到所有大于 的
,然后单独放一个区间去。
其他的数字,和 放在一起,这样能保证
等于
。
注意到, 和所有数字的
都是
。
所以最后或起来的时候,无论如何都是个奇数。
这导致所有的偶数 都无法被构造。
另外,对于“把 从
中单独挑出来”有疑惑的同学,请你试一下以下样例:
2 1
正确输出应该是:
1 2
1
1 2
or
2 1
1
1 2
而不是:
1 2
2
1 1
2 2
E qcjj寄快递
首先,提前祝新郎智乃哥哥和新娘清楚姐姐新婚快乐!
佳偶天成百年好,琴瑟和鸣永同心!
至于喜糖的事情,就把 牛币当成赛博喜糖吧qwq
欧式距离 就是平面内两点连直线,得到的距离。
耗时 会随着
的增大而产生变化,体现在先减小后增大。
所以呢,要么用数学方法,对函数求导,得到极值点,然后代回去。
或者,用计算机的方法,三分逼近极值点,也是代回去。
注意到每一个 是独立的,所以分别求完,累加即可。
参考代码(三分)
参考代码(求导)
F 幂中幂plus
注意到 很小,迭代一定次数之后,一定会产生循环节。
所以,我们可以找到循环节的起点 ,以及长度
。
输出的时候,对 进行分类讨论。
时,直接输出前缀和。
时,计算经过了几次完整的循环节
。
用循环节次数乘上循环节的前缀和,就是这块的贡献。
对于不完整的那块,你会发现进入循环节之前和剩下未完成一次循环节的位置,
刚好能拼起来,凑成 的前缀和。
两个贡献加起来,就是答案了。
当然,这里面有一些坑,可以自行检查一下:
- 找循环节的数组开小了
- 循环节的起点
不一定是
- 允许
,导致求答案时要减去
,但是忘记对
取模,输出负数
- 直接
而不是
,在良构代码里,它其实不需要被取模
- 快速幂里面没对
取模,爆
的情况下,
时返回了
而不是
- 循环节次数
没取模,做乘法时爆
感谢阅读!
全部评论
(3) 回帖