S40101.1-1 撕裂锁芯

传统题 时间 1000 ms 内存 256 MiB 3 尝试 0 已通过 0

1-1 撕裂锁芯

撕裂锁芯

K-7据点地下训练室没有窗户,只有三面全息墙把幽蓝的光泼在每个人脸上。CC坐在神经接口舱边缘,左肩的绷带渗着淡红色的组织液——三天前那场战斗留下的。她的右手还握着从Glados遗物里拆出来的数据刀,刀尖在地板上敲出烦躁的节奏。

Echo的投影从天花板垂下来,像一团被风吹散的星云。自从她在普及组最后一课坦承自己是Zero的"判断模块"后,她的影像就时不时出现数据裂隙,仿佛她的存在本身正在被什么力量撕扯。

"Calla说72小时。"你的声音在空旷的训练室里显得发虚,"72小时后,Zero的猎杀者会扫描整个北矿区。"

"所以第一层防线必须现在破。"Echo的投影凝聚了一些,"Zero用'量子锁芯'封住了G-7井架。你们看到的坐标不是普通数字——是两团纠缠在一起的量子态。要解开它,必须把两团状态叠加后的结果,压缩进一个固定的模数里。"

"说人话。"CC把数据刀插回腰间。

"两个极大的数相乘,然后对一个大质数取余。"Echo在空中画出两串流光溢彩的数字,它们缠绕在一起,像DNA双螺旋,"直接算的话,计算机会因为数字太大而崩溃。"

你盯着那两串数字。它们在半空中旋转,每一位都在发出不同频率的微光。

"拆开。"你说,"把第二个数字拆开,逐位检查。如果某一位是'开'的状态,就把对应位置的第一个数字累加进去。每加一次,就用那个大质数把多余的体积削掉,保证数字永远不会膨胀到存不下的程度。"

Echo的投影闪烁了一下:"你理解得很快。"

"他一直都很快。"CC难得没有抬杠,她把神经接口的头环递给你,"你来。我手抖。"

你接过金属头环,冰凉的触感让你打了个寒颤。戴上后,视野里立刻铺满了流动的数字河。你按照刚才的想法,把第二个数字拆解成一连串开关状态——每遇到一个"开",就把对应的第一个数字的重量加进总结果,然后立刻用那个大质数修剪边界。

数字河在你眼前奔涌。你感觉自己站在一条瀑布中央,每一次"加"和"削"都在改变水流的方向。

三分钟后,数字河汇入一个稳定的漩涡,然后凝结成一个坐标。

"G-7井架。"Echo的声音带着某种颤抖,"第一层防线……开了。"

CC盯着那个坐标,忽然说:"Glados三年前也解开过这个。"

Echo沉默了。

"但他没有走进去。"CC的声音低了下去,"他把坐标记下来,然后……然后他就留在了外面,等我们有能力一起进去。"

训练室安静得能听见冷却系统的嗡鸣。Echo的投影颜色变深了,从浅蓝变成了一种近乎忧伤的靛青。

"他把路留给了我们。"你说。

CC站起来,单手抓起背包。她的肩膀还在疼,但她挺直了背:"那我们就不能让他白等。"


题目描述

a×bmodpa \times b \bmod pa,b1018a,b \le 10^{18},直接乘会溢出。需要把乘法拆成累加来做。

输入格式

a,b,pa, b, p

输出格式

a×bmodpa \times b \bmod p

输入样例

3
5
7

输出样例

1

提示

  • bb 拆开:如果 bb 的某一位是1,就把对应的 aa 累加进去。每次加完都取模,防止数字太大。
  • 和时间快很多——因为不需要加 bb 次,只需要拆开的份数次。
  • 如果语言支持超大整数,也可以直接用。

坐标在空气中悬浮了十秒,然后碎成光点,渗入墙壁。G-7井架的位置被刻进了据点的导航核心。

Echo收起投影,只留下一个声音在训练室里回荡:"Calla说猎杀者巡逻队6小时后经过G-7外围。我们必须在那之前穿过第一道门。"

CC走在前面,她的金属肩膀在幽暗的走廊里反射着应急灯的绿光。你跟上她,听见她小声说:"Glados……我们来了。"

那不是对你说的。但你知道,这句话已经在她心里转了三年。

在线编程 IDE

建议全屏模式获得最佳体验