竞赛讨论区 > 牛客周赛101题解
头像
Silencer76
发布于 07-21 01:20 北京
+ 关注

牛客周赛101题解

比赛地址:牛客周赛 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

注意到 很小,迭代一定次数之后,一定会产生循环节。
所以,我们可以找到循环节的起点 ,以及长度
输出的时候,对 进行分类讨论。
时,直接输出前缀和。
时,计算经过了几次完整的循环节
用循环节次数乘上循环节的前缀和,就是这块的贡献。
对于不完整的那块,你会发现进入循环节之前剩下未完成一次循环节的位置,
刚好能拼起来,凑成 的前缀和。
两个贡献加起来,就是答案了。
当然,这里面有一些坑,可以自行检查一下:

  1. 找循环节的数组开小了
  2. 循环节的起点 不一定是
  3. 允许 ,导致求答案时要减去 ,但是忘记对 取模,输出负数
  4. 直接 而不是 ,在良构代码里,它其实不需要被取模
  5. 快速幂里面没对 取模,爆
  6. 的情况下, 时返回了 而不是
  7. 循环节次数 没取模,做乘法时爆

参考代码

感谢阅读!

全部评论

(3) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐