牛客周赛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. 循环节次数 没取模,做乘法时爆

参考代码

感谢阅读!

全部评论
D题if((m>>i)&1) 题解中 所有->m的二进制为1的对应的所有
1 回复 分享
发布于 2025-08-11 16:50 河北
1 回复 分享
发布于 2025-07-22 03:30 海南
点赞 回复 分享
发布于 2025-07-29 17:21 福建
点赞 回复 分享
发布于 2025-07-27 16:03 湖北

相关推荐

评论
14
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务