<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>Runtime Error</title>
      <link>https://blog.resorie.xyz</link>
      <description>Resory&#39;s blog</description>
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://blog.resorie.xyz/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Tue, 01 Sep 2026 00:00:00 +0000</lastBuildDate>
      <item>
          <title>“反叛者”的背叛</title>
          <pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/</link>
          <guid>https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/</guid>
          <description xml:base="https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/">&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
&lt;p&gt;本人于 25-26 春季学期选修了由米真老师开设的“药物”主题《写作与沟通》课程，获得了 A- 成绩。本文公开我的课程终稿；公开版删去了课程提交材料与个人信息等，并修改了部分排版。AIGC Warning.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;关键词：&lt;/strong&gt; 迷幻剂；微剂量；海特-阿什伯里；压力私有化；化学管理的原子化&lt;/p&gt;
&lt;h2 id=&quot;yi-yin-yan&quot;&gt;一、引言&lt;/h2&gt;
&lt;p&gt;20 世纪 60 年代中后期，致幻剂进入旧金山反文化的公共舞台。Kesey 与 Merry Pranksters 举办的 Acid Tests 把迷幻体验带入集体空间；1967 年夏，海特-阿什伯里成为反文化圣地，LSD 也被赋予挑战既有秩序的政治意味。同年 10 月，一场象征性的“嬉皮士之死”葬礼穿过海特街，试图埋葬一个已被大众传媒定型并消费的身份。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;进入 21 世纪，随着致幻剂临床研究重启、治疗话语扩张以及商业和大众文化关注上升，致幻剂重新进入公共视野，这一过程通常被称为“迷幻复兴”。本文并不考察这一复兴的全部面向，而将微剂量视为其日常化的一种突出形态。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;“微剂量”通常指服用远低于完整剂量、意在避免明显幻觉的一小部分剂量；它常被周期性重复，但没有统一标准。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-3-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-3&quot;&gt;[3]&lt;/a&gt;&lt;/sup&gt;2025 年 9 月，RAND 对 10,122 名美国成年人的全国代表性调查估计，约 955 万人，即成年人口的 3.7%，在过去一年中至少有一天自报微剂量使用裸盖菇素、LSD 或 MDMA。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-4-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-4&quot;&gt;[4]&lt;/a&gt;&lt;/sup&gt;这说明微剂量已经不能只被视为少数人的地下实验，尽管并不能证明微剂量在大众尺度下有稳定实践。另一项全球在线调查则显示，一般福祉与提高生产力为微剂量使用者的常见动机。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-5-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-5&quot;&gt;[5]&lt;/a&gt;&lt;/sup&gt;治疗与增强由此被置于同一套使用话语之中：致幻剂正被塑造成管理情绪、福祉与工作能力的日常技术。&lt;/p&gt;
&lt;p&gt;为什么致幻剂在两个时代被赋予了近乎相反的角色？为什么曾被视为挑战秩序的手段，如今却越来越像适应生活的自我调节？&lt;/p&gt;
&lt;p&gt;答案不在药物本身。致幻剂既没有在六七十年代天然“叛逆”，也没有在今天变得“温顺”。本文提出“化学管理的原子化”这一分析框架，用以描述一种结构性转译：系统性矛盾被重新定位为个人内部、可借化学手段处理的问题。当内在转化进一步被当作制度行动的充分替代时，政治行动的对象与必要性便可能同时受到削弱。本文将从当代微剂量实践出发，辨认这一结构如何运作，再据此重读 60 年代，检验那场以反叛为名的化学实践是否已经包含今日转向的部分条件。&lt;/p&gt;
&lt;h2 id=&quot;er-li-lun-kuang-jia&quot;&gt;二、理论框架&lt;/h2&gt;
&lt;p&gt;“化学管理的原子化”由两个理论问题交汇而成。其一是 Mark Fisher 所说的“压力私有化”：劳动条件的恶化及其造成的焦虑、抑郁与绝望，被重新解释为个人脑化学或私人经历的问题。其二是韩炳哲对功绩主体的分析：主体自认自由，主动把自我管理、量化与优化当作自己的事业。前者说明社会痛苦如何被移入个人内部，后者说明主体如何经营这个被个人化的问题。“化学管理的原子化”是本文为分析微剂量实践所作的综合。&lt;/p&gt;
&lt;p&gt;Fisher 的分析揭示了化学自我管理得以显得合理的一个前提。当社会性痛苦首先被识别为个人内部的问题，改变自身便比改变产生痛苦的结构更容易进入可想象的方案。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-6-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-6&quot;&gt;[6]&lt;/a&gt;&lt;/sup&gt;微剂量并非这一过程的必然结果，但确为压力私有化语境下的主体提供了一种可能的解决方案。本文将这种社会矛盾向个人内部的转译概括为“原子化”。&lt;/p&gt;
&lt;p&gt;微剂量的实践特征使它适合被纳入日常自我管理。使用者可以自行选择剂量、频率与组合，并通过情绪、注意力和身体感受判断效果；调整对象首先是自身状态，而非外部处境。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-7-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-7&quot;&gt;[7]&lt;/a&gt;&lt;/sup&gt;这里所说的“适合”更多是药物形式与一种既有主体姿态之间的契合；致幻剂在两个时代被赋予不同角色，取决于人们在何种问题框架中使用它。&lt;/p&gt;
&lt;p&gt;韩炳哲的分析进一步提供了三个观察维度：主体是否主动承担自我管理，如何借数据和指标认识自身，以及改善自身的要求是否具有外部终点。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-8-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-8&quot;&gt;[8]&lt;/a&gt;&lt;/sup&gt;本文分别将其概括为自愿、量化与优化，并将它们接入微剂量材料语境，分析化学管理的具体运作。&lt;/p&gt;
&lt;p&gt;Reddit 用户 MentalBlock66 的连续记录可以让这一框架变得具体。他自述长期受抑郁困扰，并称自己在接触微剂量前已经用 Goldberg 抑郁量表自评约二十年。2020 年底，他开始自行种植、研磨和称量裸盖菇，按剂量与间隔记录反应；一个月后，又用量表曲线解释自己的主观改善，同时承认安慰剂、愿望性思维和既有下降趋势等不确定因素。几个月后，他开始咨询完整剂量体验；但这已经属于另一种实践，不应与微剂量混为一谈。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-9-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-9&quot;&gt;[9]&lt;/a&gt;&lt;/sup&gt;这条时间线说明，微剂量并未凭空制造一个量化主体；它进入的，是一个早已习惯测量、比较与自行管理的主体。这个案例在自愿与量化层面已经足够说明问题；至于优化与自我剥削的更典型形态，将在生存形态一节以另一位使用者为案例展开。&lt;/p&gt;
&lt;p&gt;本文亦需区分化学行为与政治行为。前者指主体如何借化学手段管理自身，是本文跨越两个时代比较的对象；后者指主体如何对待制度与公共秩序。福柯关于规训权力的研究有助于理解 60 年代反文化所面对的制度、规范与主体生产机制，但本文不以此直接解释药物使用本身。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-10-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-10&quot;&gt;[10]&lt;/a&gt;&lt;/sup&gt;换言之，Fisher 与韩炳哲提供的是分析化学行为的工具；福柯在本文中主要用于说明 60 年代的政治语境。两种行为在 60 年代语境下存在一定程度上的彼此错位。&lt;/p&gt;
&lt;p&gt;下文将依次考察当代微剂量实践中的自愿、量化与优化，再回到 60 年代，检验两种相距半个世纪的化学实践究竟共享了什么，又在哪些地方不能被化约为同一个故事。&lt;/p&gt;
&lt;h2 id=&quot;san-zhu-ti-zi-tai&quot;&gt;三、主体姿态&lt;/h2&gt;
&lt;p&gt;化学管理首先表现为一种自愿的主体姿态。但“自愿”决不能被简单理解为自由选择的胜利，也不能被抹成受骗后的虚假意识。真实的痛苦、主动的选择与结构性的导流可以同时存在。Fisher 所说的压力私有化，正提供了理解这种并存的起点：当社会痛苦被定位于个人内部，主体便更容易主动承担解决它的责任。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-11-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-11&quot;&gt;[11]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;RAND 的调查表明，微剂量已经具有不可忽略的社会规模；Syed 等人的调查则显示，一般福祉与提高生产力同时进入了使用者陈述自身动机的语言。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-12-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-12&quot;&gt;[12]&lt;/a&gt;&lt;/sup&gt;两组材料由此勾勒出一种主体姿态：微剂量并非作为外部命令降临，而是被主动寻找、解释和安排为改善自身的手段。韩炳哲的功绩主体分析正在这里获得解释力。权力不必总以外部命令出现；当改善自身被理解为个人责任，主体便会主动承担相应的管理劳动。&lt;/p&gt;
&lt;p&gt;这种主动性在严重痛苦中尤其清楚。2026 年 6 月，一位 Reddit 用户在 r/microdosing 板块发帖称，自己服用 Zoloft 五年多，经过八个月减量后已停药约三十天，正经历严重而持续的戒断感受：大脑仿佛瘫痪和耗竭，完成基本任务时肌肉发抖，体力不足。他曾在减量期间尝试裸盖菇微剂量，并在完全停药后试过 0.05 克和 0.03 克；据其自述，服用当日和次日反而更加抑郁，神经疲劳也没有改善。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-13-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-13&quot;&gt;[13]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;这则帖子中没有对医学机制的严格探讨，却展示了问题如何被组织。发帖者和评论者讨论的主要是是否继续尝试、怎样调整剂量、菌株、间隔或组合，以及应否换用其他物质；意见彼此矛盾，也有人强调社交和日常活动的重要性。讨论并未否决现实中的其他帮助，但痛苦仍主要被处理为下一轮个人实验的问题。一种药物留下的困境，被设想为可由另一种药物修复；新尝试失效后，解决方案仍容易停留在路径内部。&lt;/p&gt;
&lt;p&gt;发帖者面对的痛苦是真实的，寻求缓解也完全正当。本文批判的是一种问题转译：当化学调整成为最容易被看见、讨论和执行的方案时，痛苦所处的医疗、社会与制度环境便可能退到视野之外。主体确实自愿行动，但自愿行动的可选范围并非由主体单独创造。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-14-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-14&quot;&gt;[14]&lt;/a&gt;&lt;/sup&gt;半个世纪前，Leary 的“turn on, tune in, drop out”已经表达了另一种主动的内在转向；当代微剂量只是把这种转向安置进更细密的日常管理。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-15-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-15&quot;&gt;[15]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;自愿选择化学管理之后，新的问题随即出现：怎样判断它是否有效？对效果的确认需要把模糊体验转成可以记录和比较的对象，这将主体推向量化。&lt;/p&gt;
&lt;h2 id=&quot;si-ren-zhi-fang-shi&quot;&gt;四、认知方式&lt;/h2&gt;
&lt;p&gt;微剂量的效果充满不确定性：剂量因人而异，反应可能波动，主观改善也难与期待、生活变化和安慰剂效应分开。身处这种不确定性之中，主体自然会寻找一些可以把握的东西。量化因此并非纯粹的外部强制，它回应了使用者对确定性的真实需要。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-16-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-16&quot;&gt;[16]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Anderson 等人 2019 年的研究展示了这种转译如何进入科学语言。研究者收集 278 名微剂量使用者的开放式自述，再将其编码为可计数的收益与挑战类别；其中约 26.6% 的报告被归入“情绪改善”，约 14.8% 被归入“专注改善”。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-17-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-17&quot;&gt;[17]&lt;/a&gt;&lt;/sup&gt;这些数字描述的是报告类别的分布，不是经对照实验确认的疗效。它们的意义在于，原本松散的体验由此获得了可汇总、可比较的形式。&lt;/p&gt;
&lt;p&gt;个人实践中的量化有时更为细密。一位 Reddit 用户称，他以约 35 克干燥裸盖菇和 400 毫升酒精制作冷浸酊剂，估算每毫升的裸盖菇素含量，把一次剂量拆成八至十滴，并搭配咖啡、猴头菇与虫草，以调节情绪、创造力和精力。他为溶剂浓度、滴数、给药节奏和协同成分安排了近似实验的协议，却也承认蘑菇效力与萃取效率都没有经过检测。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-18-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-18&quot;&gt;[18]&lt;/a&gt;&lt;/sup&gt;数字在这里没有消除不确定性。它们首先提供的是可控感，以及一套可以向他人传达经验的语言。&lt;/p&gt;
&lt;p&gt;受控研究对微剂量的检验，同样揭示了这种不确定性。de Wit 等人在健康成人和有限给药周期内，未观察到重复低剂量 LSD 对总体情绪及多数认知指标的显著改善；Szigeti 等人的自我盲法研究中，微剂量组与安慰剂组都较基线改善，但总体收益没有显著组间差异；Kuypers 等人的综述认为定义、风险和长期影响仍缺乏充分证据；Polito 与 Stevenson 的纵向研究则得到较预期更窄且彼此混合的结果。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-19-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-19&quot;&gt;[19]&lt;/a&gt;&lt;/sup&gt;这些研究足以说明，流行叙事中似乎确定性的微剂量药效，并未得到同等强度的研究证据支持。&lt;/p&gt;
&lt;p&gt;科学研究与个人记录在这里共享了一项基本操作：它们都把微剂量的意义转化为个体身上可以测量的效果。科学研究有充分理由检验情绪、认知等指标；但当争论始终围绕“微剂量能否改善个体”展开时，另一个问题便留在了视野之外：为什么个体改善本身会成为理解和回应痛苦的优先尺度？科学可以检验优化是否发生，却不会仅凭这些指标回答优化为何成为问题框架。量化由此不仅整理了经验，也预先规定了什么样的变化能够作为答案出现。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-20-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-20&quot;&gt;[20]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;一份在微剂量社群中流传的 Microdose Tracker 更清楚地显示了这种张力。表格设置十分制评分、基线与疗程后比较，要求记录情绪、专注、精力、睡眠、压力等指标；它同时保留意图书写和开放式反思页。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-21-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-21&quot;&gt;[21]&lt;/a&gt;&lt;/sup&gt;表格表明，量化与叙事并非只能二选一：预设指标组织着观察，空白页则允许写下无法被数字捕获的变化。&lt;/p&gt;
&lt;p&gt;因此，量化并未吞没全部经验。更准确地说，它完成了一次转译：痛苦被变成个人可以追踪、比较和调整的指标，同时仍留下不被指标穷尽的叙述。主体从中获得了某种把握，也保留了怀疑和余量。然而，一旦自我成为可以持续测量的对象，它也就更容易成为可以持续改善的项目。&lt;/p&gt;
&lt;h2 id=&quot;wu-sheng-cun-xing-tai&quot;&gt;五、生存形态&lt;/h2&gt;
&lt;p&gt;量化并不必然导向自我剥削，但它为持续优化提供了条件。当治疗、增强与道德化的自我改善被放入同一套指标，照顾自己与投资自己之间的边界便开始变得模糊。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-22-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-22&quot;&gt;[22]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;一位账号已经删除的 Reddit 用户曾以“微剂量真的改变了我的人生”为题，叙述自己在低剂量 SSRI、Adderall 与裸盖菇微剂量并用的情况下，情绪、专注、工作表现和日常功能都有改善。他还把戒除酗酒倾向、培养习惯和“成为更好的人”放入同一叙事。在回复中，他称自己曾多次加入或移除微剂量，并据此把它理解为持续有效的变量，同时也承认它并非万能疗法。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-23-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-23&quot;&gt;[23]&lt;/a&gt;&lt;/sup&gt;这套个人实验的个案中，治疗抑郁、提高专注、改善工作与追求更好的自我，已经难以分开。&lt;/p&gt;
&lt;p&gt;韩炳哲所说的功绩主体，既是管理者，也是被管理的对象。自我优化的问题不在于改善本身，而在于它缺少明确的外部终点：今天的情绪、专注与功能有所改善，新的结果又可能成为下一轮比较的基线。微剂量由使用者自行安排并嵌入日常，因而能够参与这种持续管理。它不必强迫主体，主体自己便会调整协议、追踪反应、寻找更好的状态。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-24-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-24&quot;&gt;[24]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;“治愈即杀害”在这一限定意义上成立。治愈本身不是暴力，追求改善也不是错误；风险来自治疗与无界优化的合并。当每一次改善都重新定义“正常”，照顾自身便可能滑向永无止境的自我改造。耗竭正是这种结构包含的可能性：主体不断投入管理劳动，却越来越难回答何时已经足够。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-25-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-25&quot;&gt;[25]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;前文 SSRI 戒断中的使用者提醒我们，化学自我管理首先可能是一种求生行动，而非职业竞争。因而本文的判断只在一个条件下成立：当个人状态的改善被当作回应痛苦的主要形式，并进一步替代了对外部成因与制度行动的追问，压力私有化才得到最充分的展开。&lt;/p&gt;
&lt;p&gt;60 年代的迷幻实践同样包含改善的愿景，但它的目标并不只是个人生产力。许多参与者希望借意识转化抵达一种更完整的生活，甚至更好的共同体。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-26-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-26&quot;&gt;[26]&lt;/a&gt;&lt;/sup&gt;正是这一差异，使六十年代不能被简单写成当代微剂量的前史；也正是这一差异，让两者之间可能存在的结构联系值得重新检验。&lt;/p&gt;
&lt;h2 id=&quot;liu-fan-guan-60-nian-dai&quot;&gt;六、反观 60 年代&lt;/h2&gt;
&lt;p&gt;在 60 年代的重读中，化学行为与政治行为应当得到区分。本节主要考察嬉皮士如何理解和使用致幻剂，而嬉皮士的反战、共同体实验、免费服务等公共行动落入政治行为的框架。本文欲检验的是：当致幻剂被当作改变主体乃至社会的重要手段时，社会矛盾是否也可能被移入个人意识之中。&lt;/p&gt;
&lt;p&gt;Kesey 与 Merry Pranksters 的 Acid Tests、1967 年 1 月的 Human Be-In、Leary 在会上公开传播的“turn on, tune in, drop out”，以及随后的“爱之夏”，使旧金山迷幻文化以集会、音乐和街头生活的形式进入公共视野。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-27-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-27&quot;&gt;[27]&lt;/a&gt;&lt;/sup&gt;许多参与者主动追寻致幻体验，相信意识的改变能够改变生活，甚至参与社会变革。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-28-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-28&quot;&gt;[28]&lt;/a&gt;&lt;/sup&gt;从本文的三个维度看，自愿最为明确；“意识”成为解释个人与社会问题的一项集中尺度；优化所指向的，是更完整的生活与更合乎乌托邦的共同体，而不是今天意义上的个人绩效。&lt;/p&gt;
&lt;p&gt;这种对应不等同于当代微剂量实践已经在 60 年代预先成形：彼时没有微剂量协议、数字化追踪和功绩社会语境，经营内在状态的技术、政治目标与社会条件也不相同。然而，这些差异之下，是一个更基础的对应：两个时代都把主体内部的转化设想为改变生活乃至社会的起点。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-29-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-29&quot;&gt;[29]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;这场运动也没有沿着单一的药物因果线走向衰败。到 1967 年夏秋，安非他命，尤其是甲基苯丙胺，在海特迅速扩散，短效巴比妥类药物的滥用也随之增加；后者还常被用于终止持续使用兴奋剂后的“speed run”。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-30-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-30&quot;&gt;[30]&lt;/a&gt;&lt;/sup&gt;与此同时，媒体把街区塑造成可供观看的奇观，游客、商人与逐利者涌入，人口过载与资源压力加剧。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-31-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-31&quot;&gt;[31]&lt;/a&gt;&lt;/sup&gt;新左派与嬉皮士的路径差异也日益清晰：前者更多诉诸制度、法律和政策层面的抗争，后者则更多通过文化、生活方式与共同体实验挑战主流秩序；两者彼此交叠，却从未完全重合。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-32-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-32&quot;&gt;[32]&lt;/a&gt;&lt;/sup&gt;1967 年 10 月 6 日，旧金山无政府主义街头行动团体 Diggers 抬着一具装满嬉皮饰物的棺材穿过海特，为这个“大众媒体忠诚的儿子”举行象征性葬礼。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-33-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-33&quot;&gt;[33]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;在这些历史条件下，“化学管理的原子化”作为一种后来的解释模型，提示我们注意一处错位：政治愿景指向制度和共同体，化学路径却首先作用于个体的意识与感受。当内在转化被赋予过多政治期待时，改变社会的任务便可能被压缩为改变主体自身。本文所谓古今“同构”，也只限于这项逻辑，并不意味两个时代的行为、语境或结果完全相同。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-34-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-34&quot;&gt;[34]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;反例进一步规定了这个判断的边界。Stephen Gaskin 等人建立的田纳西公社 The Farm 的共同体实践、Diggers 的免费食物与 Free Store，以及嬉皮文化更广泛的政治效应，都说明迷幻体验并不天然把人推回私人世界；它也可能被纳入责任、互助与公共行动。&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-35-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fn-35&quot;&gt;[35]&lt;/a&gt;&lt;/sup&gt;因此，问题不是“服用致幻剂必然取消政治”，而是当化学性的内在改变被当作制度行动的充分替代时，政治矛盾才会被进一步移入个人内部。公共行动越真实，这种化学路径与政治愿景之间的错位反而越清楚。&lt;/p&gt;
&lt;p&gt;嬉皮士的政治意图、迷幻体验与退出主流生活的决断都不必被判为虚假，海特-阿什伯里的历史也不能归结为一群人受骗后自我毁灭。它留下的警示更加有限，也更加严峻：真诚的内在改变并不会自动兑现制度性的政治承诺；当两者被等同，化学手段就要承担它无法独自完成的任务。半个世纪后的微剂量实践并非简单重演六十年代，却使这种错位以更日常、更个人化的形式再次显现。&lt;/p&gt;
&lt;h2 id=&quot;qi-jie-lun&quot;&gt;七、结论&lt;/h2&gt;
&lt;p&gt;自愿、量化与优化构成了化学自我管理的三种相互关联的运作方式。主体主动选择，借指标确认效果，并可能在持续改善中不断重设基线。它们共同揭示一种结构性风险：社会痛苦被转译为个人内部的化学问题，内在转化则可能取代对外部成因与制度行动的追问。&lt;/p&gt;
&lt;p&gt;回到标题。“反叛者”并非嬉皮士，而是被赋予反叛角色的致幻剂；所谓背叛，也不是分子的意志。真正发生断裂的，是政治愿景与化学路径：人们期待一种作用于主体内部的手段，独自兑现只有借助集体和制度行动才可能完成的承诺。致幻剂在两个时代间扮演的角色变换，恰如一面镜子：它映出的，从来不是自身的属性，而是所处结构的诉求。致幻剂从未背叛任何人。它只是将人导向结构预设的终点。&lt;/p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;参见 Martin A. Lee and Bruce Shlain, &lt;em&gt;Acid Dreams: The Complete Social History of LSD: The CIA, the Sixties, and Beyond&lt;/em&gt;, rev. ed., New York: Grove Press, 1992, pp. 107–111, 126–150; Charles Perry, &lt;em&gt;The Haight-Ashbury: A History&lt;/em&gt;, New York: Random House, 1984, pp. 146–147. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-1-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;参见 Mateo Sanchez Petrement, “Historicizing Psychedelics: Counterculture, Renaissance, and the Neoliberal Matrix,” &lt;em&gt;Frontiers in Sociology&lt;/em&gt;, Vol. 8, 2023, Article 1114523, pp. 1, 9–11. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-2-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;参见 Vince Polito and Paul Liknaitzky, “The Emerging Science of Microdosing: A Systematic Review of Research on Low Dose Psychedelics (1955–2021) and Recommendations for the Field,” &lt;em&gt;Neuroscience &amp;amp; Biobehavioral Reviews&lt;/em&gt;, Vol. 139, 2022, Article 104706, pp. 1–2; Kim P. C. Kuypers et al., “Microdosing Psychedelics: More Questions than Answers? An Overview and Suggestions for Future Research,” &lt;em&gt;Journal of Psychopharmacology&lt;/em&gt;, Vol. 33, No. 9, 2019, pp. 1039–1041. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-3-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;参见 Michelle Priest, Beau Kilmer, Ben Senator, and Claude Messan Setodji, &lt;a rel=&quot;external&quot; href=&quot;https://doi.org/10.7249/RRA4334-1&quot;&gt;U.S. Psychedelic Use and Microdosing in 2025: Insights from a Probability-Based and Nationally Representative Survey&lt;/a&gt;, Santa Monica, CA: RAND Corporation, 2026, RR-A4334-1. 调查采用 10,122 名美国成年人的概率样本并施加人口权重；955 万和 3.7% 均为裸盖菇素、LSD 与 MDMA 三类自报使用者去重后的估计，口径为过去一年“至少一天”，剂量与物质未经独立验证。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-4-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-5&quot;&gt;
&lt;p&gt;参见 Omer A. Syed et al., “Global Trends in Psychedelic Microdosing: Demographics, Substance Testing Behavior, and Patterns of Use,” Journal of Psychoactive Drugs, Vol. 58, No. 1, 2026, pp. 18–28, esp. p. 21. 该在线便利样本包含 2,488 名每月至少微剂量一次的受访者；73.0% 将一般福祉、55.4% 将提高生产力列为使用原因之一，题目允许多选。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-5-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-6&quot;&gt;
&lt;p&gt;参见 Mark Fisher, “The Privatisation of Stress,” &lt;em&gt;Soundings&lt;/em&gt;, No. 48, 2011, pp. 123–133. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-6-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-7&quot;&gt;
&lt;p&gt;参见 Polito and Liknaitzky, “The Emerging Science of Microdosing,” pp. 1–2; Vince Polito and Richard J. Stevenson, “A Systematic Study of Microdosing Psychedelics,” &lt;em&gt;PLOS ONE&lt;/em&gt;, Vol. 14, No. 2, 2019, Article e0211023, pp. 1–2. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-7-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-8&quot;&gt;
&lt;p&gt;参见韩炳哲：《精神政治学》，关玉红译，北京：中信出版社，2019 年，“自由的危机”“福柯的困境”“治愈即杀害”及“大数据”章之“量化自我”。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-8-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-9&quot;&gt;
&lt;p&gt;参见 MentalBlock66, &lt;a rel=&quot;external&quot; href=&quot;https://www.reddit.com/r/microdosing/comments/kgeeu4/first_md_with_mushrooms/&quot;&gt;“First MD with mushrooms”&lt;/a&gt;, Reddit, r/microdosing, 2020-12-19; &lt;a rel=&quot;external&quot; href=&quot;https://www.reddit.com/r/microdosing/comments/kkk1ap/im_having_trouble_homing_in_on_the_best_dose_of/&quot;&gt;“I&#39;m having trouble homing in on the best dose of mushrooms”&lt;/a&gt;, 2020-12-26; &lt;a rel=&quot;external&quot; href=&quot;https://www.reddit.com/r/microdosing/comments/kzkkwr/tracking_depression_scores_before_and_after/&quot;&gt;“Tracking depression scores before and after microdosing psilocybin”&lt;/a&gt;, 2021-01-18; &lt;a rel=&quot;external&quot; href=&quot;https://www.reddit.com/r/microdosing/comments/nub3lx/microdoser_needs_opinions_on_safe_first_macrodose/&quot;&gt;“Microdoser needs opinions on safe first macrodose”&lt;/a&gt;, 2021-06-07, accessed 2026-06-14. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-9-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-10&quot;&gt;
&lt;p&gt;参见米歇尔·福柯：《规训与惩罚：监狱的诞生》，刘北成、杨远婴译，北京：生活·读书·新知三联书店，2003 年，第三部分“规训”。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-10-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-11&quot;&gt;
&lt;p&gt;参见 Fisher, “The Privatisation of Stress,” pp. 123–133; 韩炳哲：《精神政治学》，“自由的危机”。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-11-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-12&quot;&gt;
&lt;p&gt;参见 Priest et al., &lt;em&gt;U.S. Psychedelic Use and Microdosing in 2025&lt;/em&gt;; Syed et al., “Global Trends in Psychedelic Microdosing,” p. 21. 两项调查分别支撑使用规模与自报动机；“主体姿态”是本文在此基础上的解释。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-12-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-13&quot;&gt;
&lt;p&gt;参见 Andrew_Rayen, &lt;a rel=&quot;external&quot; href=&quot;https://www.reddit.com/r/microdosing/comments/1tzynkd/did_microdosing_mushrooms_help_anyone_with_the/&quot;&gt;“Did microdosing (mushrooms) help anyone with the severe physical/nervous system fatigue from SSRI withdrawal?”&lt;/a&gt;, Reddit, r/microdosing, 2026-06-08, accessed 2026-06-14. 症状、药物史和剂量均为发帖者自述。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-13-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-14&quot;&gt;
&lt;p&gt;参见 Fisher, “The Privatisation of Stress,” pp. 123–133; Sanchez Petrement, “Historicizing Psychedelics,” pp. 9–10. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-14-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-15&quot;&gt;
&lt;p&gt;Lee and Shlain, &lt;em&gt;Acid Dreams&lt;/em&gt;, pp. 118, 129–130. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-15-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-16&quot;&gt;
&lt;p&gt;参见 Kuypers et al., “Microdosing Psychedelics,” pp. 1039–1057; Polito and Liknaitzky, “The Emerging Science of Microdosing,” pp. 1–3; Polito and Stevenson, “A Systematic Study of Microdosing Psychedelics,” pp. 1–2. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-16-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-17&quot;&gt;
&lt;p&gt;参见 Thomas Anderson et al., “Psychedelic Microdosing Benefits and Challenges: An Empirical Codebook,” &lt;em&gt;Harm Reduction Journal&lt;/em&gt;, Vol. 16, 2019, Article 43, p. 1. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-17-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-18&quot;&gt;
&lt;p&gt;参见 Aggravating-Gap-6381, &lt;a rel=&quot;external&quot; href=&quot;https://www.reddit.com/r/microdosing/comments/1u1k97p/feedback_on_my_microdosing_protocol_homemade/&quot;&gt;“Feedback on my microdosing protocol - homemade tincture, split dosing, lion&#39;s mane + cordyceps stack”&lt;/a&gt;, Reddit, r/microdosing, 2026-06-09, accessed 2026-06-14. 帖中裸盖菇素含量为发帖者估算，而非实验室检测结果。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-18-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-19&quot;&gt;
&lt;p&gt;参见 Harriet de Wit et al., “Repeated Low Doses of LSD in Healthy Adults: A Placebo-Controlled, Dose-Response Study,” &lt;em&gt;Addiction Biology&lt;/em&gt;, Vol. 27, No. 2, 2022, Article e13143, pp. 1–2; Balázs Szigeti et al., “Self-Blinding Citizen Science to Explore Psychedelic Microdosing,” &lt;em&gt;eLife&lt;/em&gt;, Vol. 10, 2021, Article e62878, pp. 1–2; Kuypers et al., “Microdosing Psychedelics,” pp. 1039–1057; Polito and Stevenson, “A Systematic Study of Microdosing Psychedelics,” pp. 1–2. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-19-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-20&quot;&gt;
&lt;p&gt;参见韩炳哲：《精神政治学》，“大数据”章之“量化自我”；Sanchez Petrement, “Historicizing Psychedelics,” pp. 9–10. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-20-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-21&quot;&gt;
&lt;p&gt;参见 CampKetchup, &lt;a rel=&quot;external&quot; href=&quot;https://www.reddit.com/r/microdosing/comments/u3qeb6/updated_printable_md_tracker_protocol_calendar/&quot;&gt;“Updated Printable MD Tracker: Protocol Calendar, Baseline, Intentions, Daily Logs, Reflection (Optional ADHD Focus)”&lt;/a&gt;, Reddit, r/microdosing, 2022-04-14, accessed 2026-06-07. 所附 13 页 PDF 的元数据作者为 Emily Edwards。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-21-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-22&quot;&gt;
&lt;p&gt;参见韩炳哲：《精神政治学》，“大数据”章之“量化自我”及“治愈即杀害”。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-22-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-23&quot;&gt;
&lt;p&gt;参见 [deleted], &lt;a rel=&quot;external&quot; href=&quot;https://www.reddit.com/r/redscarepod/comments/yva2nh/microdosing_unironically_changed_my_life/&quot;&gt;“Microdosing unironically changed my life”&lt;/a&gt;, Reddit, r/redscarepod, 2022-11-14; &lt;a rel=&quot;external&quot; href=&quot;https://www.reddit.com/r/redscarepod/comments/yva2nh/microdosing_unironically_changed_my_life/iwd6vn0/&quot;&gt;reply in the same thread&lt;/a&gt;, accessed 2026-06-07. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-23-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-24&quot;&gt;
&lt;p&gt;参见韩炳哲：《精神政治学》，“自由的危机”“福柯的困境”。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-24-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-25&quot;&gt;
&lt;p&gt;参见韩炳哲：《精神政治学》，“治愈即杀害”。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-25-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-26&quot;&gt;
&lt;p&gt;参见 Morgan Shipley, “Hippies and the Mystic Way: Dropping Out, Unitive Experiences, and Communal Utopianism,” &lt;em&gt;Utopian Studies&lt;/em&gt;, Vol. 24, No. 2, 2013, pp. 232–263, esp. pp. 255–258. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-26-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-27&quot;&gt;
&lt;p&gt;参见 Lee and Shlain, &lt;em&gt;Acid Dreams&lt;/em&gt;, pp. 75, 107–111, 118, 126–139. Human Be-In 举行于 1967 年 1 月 14 日；“turn on, tune in, drop out”此前已经出现，故正文只写“公开传播”。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-27-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-28&quot;&gt;
&lt;p&gt;参见 Lee and Shlain, &lt;em&gt;Acid Dreams&lt;/em&gt;, pp. 127–130, 144–145. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-28-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-29&quot;&gt;
&lt;p&gt;参见 Lee and Shlain, &lt;em&gt;Acid Dreams&lt;/em&gt;, pp. 127–130, 144–145; Sanchez Petrement, “Historicizing Psychedelics,” pp. 1, 9–11. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-29-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-30&quot;&gt;
&lt;p&gt;参见 Lee and Shlain, &lt;em&gt;Acid Dreams&lt;/em&gt;, pp. 145–147; Donald R. Wesson, “Psychedelic Drugs, Hippie Counterculture, Speed and Phenobarbital Treatment of Sedative-Hypnotic Dependence: A Journey to the Haight Ashbury in the Sixties,” &lt;em&gt;Journal of Psychoactive Drugs&lt;/em&gt;, Vol. 43, No. 2, 2011, pp. 153–164, esp. pp. 155–156. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-30-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-31&quot;&gt;
&lt;p&gt;参见 Lee and Shlain, &lt;em&gt;Acid Dreams&lt;/em&gt;, pp. 128–139. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-31-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-32&quot;&gt;
&lt;p&gt;参见 Russell Duncan, “The Summer of Love and Protest: Transatlantic Counterculture in the 1960s,” Grzegorz Kosc, Clara Juncker, Sharon Monteith, and Britta Waldschmidt-Nelson, eds., &lt;em&gt;The Transatlantic Sixties: Europe and the United States in the Counterculture Decade&lt;/em&gt;, Bielefeld: transcript Verlag, 2013, pp. 152–153, 158–161; Lee and Shlain, &lt;em&gt;Acid Dreams&lt;/em&gt;, pp. 129–131. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-32-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-33&quot;&gt;
&lt;p&gt;参见 Perry, &lt;em&gt;The Haight-Ashbury&lt;/em&gt;, pp. 146–147; Lee and Shlain, &lt;em&gt;Acid Dreams&lt;/em&gt;, pp. 149–150. 此处是象征性葬礼，不等于嬉皮士或反文化运动在该日整体终结。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-33-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-34&quot;&gt;
&lt;p&gt;参见 Sanchez Petrement, “Historicizing Psychedelics,” pp. 1, 9–11. Sanchez Petrement 同样强调，致幻剂的政治意义并非药物固有，而取决于其所处的社会政治语境；本文在此基础上进一步区分化学路径与政治愿景。 &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-34-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-35&quot;&gt;
&lt;p&gt;参见 Shipley, “Hippies and the Mystic Way,” pp. 255–258; Duncan, “The Summer of Love and Protest,” pp. 160–161; Lee and Shlain, &lt;em&gt;Acid Dreams&lt;/em&gt;, pp. 135–137. &lt;a href=&quot;https://blog.resorie.xyz/posts/psychedelic-renaissance-essay/#fr-35-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</description>
      </item>
      <item>
          <title>地狱人</title>
          <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.resorie.xyz/posts/p-h/</link>
          <guid>https://blog.resorie.xyz/posts/p-h/</guid>
          <description xml:base="https://blog.resorie.xyz/posts/p-h/">&lt;p&gt;求解 $g^x\equiv a\pmod P$，即 $\operatorname{ind}_ga\equiv x\pmod{(P-1)}$。要求 $P-1$ 较 smooth。&lt;/p&gt;
&lt;p&gt;考虑对模数动手。首先我们要明确离散对数在其他模数下的定义。假设模数 $m\mid(P-1)$，$\operatorname{ind}_ga\equiv x_0\pmod m$。带入原始的指数方程：&lt;/p&gt;
&lt;p&gt;$$
g^{km+x_0}\equiv a\pmod P
$$&lt;/p&gt;
&lt;p&gt;为分离出 $x_0$，我们要消灭掉指数上的 $m$。由 Fermat 小定理，有 $g^{P-1}\equiv 1\pmod P$，且我们有 $m\mid(P-1)$，故可以左右同取 $\frac{P-1}{m}$ 次幂：&lt;/p&gt;
&lt;p&gt;$$
\left(g^{km+x_0}\right)^{\frac{P-1}{m}}\equiv g^{k(P-1)}\cdot g^{\frac{(P-1)x_0}m}\equiv \left(g^{\frac{P-1}{m}}\right)^{x_0}\equiv a^{\frac{P-1}m}\pmod P
$$&lt;/p&gt;
&lt;p&gt;如果令 $G=g^{\frac{P-1}m},A=a^{\frac{P-1}m}$，那么我们就得到 $G^{x_0}\equiv A\pmod P$ 的形式。&lt;/p&gt;
&lt;p&gt;这个过程在对数意义下也很直观，因为我们可以将整个同余式乘上 $\frac{P-1}{m}$：&lt;/p&gt;
&lt;p&gt;$$
\frac{(P-1)x_0}{m}\equiv \frac{P-1}m\operatorname{ind}_ga\equiv \operatorname{ind}_g a^{\frac{P-1}m}\pmod{(P-1)}
$$&lt;/p&gt;
&lt;p&gt;Pohlig-Hellman 算法基于以下观察：若已知 $x$ 满足 $\operatorname{ind}_g a\equiv x\pmod {p}$，那么我们容易求解 $\operatorname{ind}_ga\equiv x&#39;\pmod {pq}$。设 $x&#39;=kp+x(0\le k&amp;lt;q)$，还原成指数形式有：&lt;/p&gt;
&lt;p&gt;$$
a^{\frac{P-1}{pq}}\equiv \left(g^{kp+x}\right)^{\frac{P-1}{pq}}\equiv\left(g^{\frac{P-1}{q}}\right)^k\cdot g^{\frac{(P-1)x}{pq}}\pmod P
$$&lt;/p&gt;
&lt;p&gt;由这个式子，我们可以用 BSGS 解出 $k$，进而得出 $x&#39;$。单次递推的复杂度为 $O(\sqrt q)$。&lt;/p&gt;
&lt;p&gt;利用这个结论，比较自然的想法是：选取一个模数路径 $m_1\mid m_2\mid \dots\mid m_n=P-1$，求出 $\operatorname{ind}_g a\equiv x_1\pmod {m_1}$，然后依次递推出答案。这当然是可行的，不过稍显复杂。&lt;/p&gt;
&lt;p&gt;我们知道求解各种模意义下的方程，经常用到 CRT。在这个算法下，CRT 其实也可以看作是模数 $p\to pq$ 的一次递推，即先求解模 $p$ 和 $q$ 的 case，然后合并。在底数固定的情况下，CRT 合并的开销极低，那么我们大可以将所有 $p,q$ 互质的情况都用 CRT。于是我们只需要考虑用刚才的递推求解 $\operatorname{ind}_ga\equiv x\pmod {p^\alpha}$。&lt;/p&gt;
&lt;p&gt;为了减小递推的开销，Pohlig-Hellman 算法直接令模数路径中相邻项之间的商为素因子 $p$，即令模数按照 $p\to p^2\to\dots$ 的路径递推。那么以上的 P-H 递推可以形象地解释为 $p$ 进制数位的递推：设 $x$ 的 $p$ 进制表示为 $x=x_0+x_1p+\dots+x_{\alpha-1}p^{\alpha - 1}$。这个对数方程左右同乘上一个 $p^j$，就抹去了 $x$ 在 $p$ 进制下的较高位：&lt;/p&gt;
&lt;p&gt;$$
p^j\operatorname{ind}_ga\equiv \sum_{i&amp;lt;\alpha}x_ip^{i+j}\pmod {p^\alpha}
$$&lt;/p&gt;
&lt;p&gt;于是等式右边 $i+j\ge\alpha$ 的项就全部被抹去，得到一个关于 $x_0,x_1,\dots,x_{\alpha-j-1}$ 的等式。为了能够计算，化为指数形式：&lt;/p&gt;
&lt;p&gt;$$
A^{p^j}\equiv G^{\sum_{i+j&amp;lt;\alpha}x_ip^{i+j}}\equiv \prod_{i+j&amp;lt;\alpha}G^{x_ip^{i+j}}\pmod P
$$&lt;/p&gt;
&lt;p&gt;此时我们可以用 BSGS 算出 $x_{\alpha-j-1}$。实际实现中，由于 $p$ 较小，有时也会直接枚举 $x_{\alpha-j-1}$ 并验证来求解，以避免 BSGS 较大的常数。解决模 $p^\alpha$ 的单个 case 的复杂度为 $O(\sqrt p\alpha)$，总复杂度为 $O(\sum (\sqrt{p_i}\alpha_i+\log P))\approx O((\sqrt{\max p}+\omega(P-1))\log P)$。&lt;/p&gt;
&lt;p&gt;回顾 BSGS，我们是对指数做了一个根号分块。那么在 P-H 中，我们通过变换模数，将指数分为了 $\alpha=O(\log P)$ 块求解，并保证这个分块有易于求解的性质。&lt;/p&gt;
&lt;p&gt;更进一步地，模数路径中相邻项之商可以灵活选取。对较大的 $\alpha$，可以令模数按照 $p^{\beta}\to p^{2\beta}\to\dots$ 的路径递推，即将指数看作 $p^\beta$ 进制数。算法过程与之前类似，此时单个 case 的复杂度为 $O(p^{\beta/2}\cdot\frac\alpha\beta)$。&lt;/p&gt;
&lt;p&gt;接下来考虑多次询问的情况下，如何预处理以优化单次询问。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;注意到方程中含 $x_{\alpha-j-1}$ 的一项中，指数内 $p$ 的幂次必定被提升至了 $\alpha-1$，故在预处理时，可以打这样一个表：算出 $\forall x\in[0,p)$ 的 $G^{xp^{\alpha-1}}$，并构建一个逆映射。这样求解时直接查询即可。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;设在模 $p_i^{\alpha_i}$ 的 case 下将指数看作 $p_i^{\beta_i}$ 进制数，那么该 case 的预处理需要 $O(p_i^{\beta_i})$ 时间/空间，查询复杂度则为 $O(\alpha_i/\beta_i+\log P)$。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;P-H 查询时的复杂度瓶颈之一在于，对 CRT 分离出的每个 $p^\alpha$ case，我们都要算一遍 $A=a^{\frac{P-1}{p^\alpha}}$ 及所有 $A^{p^j}$，这有时过于昂贵。对较小的 $p^\alpha$，我们可以设定阈值 $S$，贪心地将若干个 $p^\alpha$ 分成一组（只要它们的积不超过 $S$），并暴力 BSGS 或全部预处理。这样我们就减少了 $A$ 部分的快速幂次数。如对 $P=998244353=2^{23}\times7\times17+1$，可以将 $7\times17$ 打包成一组。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;事实上后两条优化都脱胎于模数路径的选取。原则很简单：合并互质模数时，CRT 优于 P-H 递推；视具体情况，平衡预处理和递推开销。&lt;/p&gt;
</description>
      </item>
      <item>
          <title>昨日</title>
          <pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.resorie.xyz/posts/yesterday/</link>
          <guid>https://blog.resorie.xyz/posts/yesterday/</guid>
          <description xml:base="https://blog.resorie.xyz/posts/yesterday/">&lt;p&gt;原谅我突兀的惊醒。我梦见——一封讣告。藏在一个窗口里，静静地漂浮在我眼前流过的无数窗口之中。&lt;/p&gt;
&lt;p&gt;我想这一次我不愿错过它。伸手去捕捉——先赋予它一个载体好了，我梦中为他生成的身份是 up 主，我曾关注的。我想起我应该关注了许多人，他（她？）应当是迷失其中的一个。&lt;/p&gt;
&lt;p&gt;那名字已有些陌生。我隐约记得，那似乎是一首惊艳至极的翻唱。我该怎么描述它？——不，它在从我脑海中溜走——或许在我惊醒之前便已来不及。等我赶到案发现场，已经没有作品剩下。&lt;/p&gt;
&lt;p&gt;这还不足以惊醒我，我们无时无刻不在错过着。令我冷汗直流的是，我梦中如何生成这个形象。难道我的潜意识里有无数这样的晶体，存储着无数个模拟的形象？我写下这段文字时已快清醒，我想到那或许是对完美事物的一种臆想，可这像是迟来的宽慰。
我又回想起那无数个形象。倘若有人收集它，它们的无穷的螺旋一定像海草与藤蔓缠绕着水泥柱子一样，缠绕在梦的骨骼上。我想起高三时我曾想写一篇小说（最后却不了了之），题目叫《设计相遇》。就这样穿梭在梦境生成的意识之海里，为每一个身份创造一个与我相遇的切片——可惜我不会有时间。&lt;/p&gt;
&lt;p&gt;Resory 于 2026.1.15 凌晨 4:15&lt;/p&gt;
</description>
      </item>
      <item>
          <title>To see the next part of the dream</title>
          <pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.resorie.xyz/posts/2025-end/</link>
          <guid>https://blog.resorie.xyz/posts/2025-end/</guid>
          <description xml:base="https://blog.resorie.xyz/posts/2025-end/">&lt;h2 id=&quot;mutilated-memory&quot;&gt;Mutilated Memory&lt;/h2&gt;
&lt;p&gt;我常避免在文字中谈及自己的回忆。那些碎片的、光影般的记忆似乎不值一提，我也无法找到合适的词句把它们连缀成篇。&lt;/p&gt;
&lt;p&gt;可是，那些记忆都去哪了？回想起来，我似乎常常抨击高中，有关那些条条框框的一切，以及被浪费的时间：就像记忆被切走一般。套用我高三时钟爱的拉美文学手法，那些记忆想必只在我经历它们时存在，在那些瞬间经过后，它的意义、存在都即刻灰飞烟灭。&lt;/p&gt;
&lt;p&gt;在高考过后许久的，同一年冬季里，会有友人与我闲聊时，用抨击高中生活时同样的话术，再度抨击大一的在校时光。在某些比较 emo 的时刻，也许他又会质疑起一些无谓的问题：“生命的意义是什么？”我会在无数次的敷衍过后，思忖许久，说出：“那是你唯一的自由”。&lt;/p&gt;
&lt;p&gt;或许我的眼界只允许我对存在主义有如此的理解：我们把仅剩的一切看作自由，生活高贵的恩赐。那么，且就贪婪地把“意义”归于这自由中吧——可那高中剩下的一切，我所痛苦地回忆，咒骂的无意义的时光，却显得矛盾了。&lt;/p&gt;
&lt;p&gt;我会在无数个陷入幽微的时刻这样剖析我自己：也许我所憎恶的一切，都是我自己惰性的某种伪装。我也会剖析我对自我的剖析：也许我擅长剖析自我，却不擅长改变自我——归根到底，我擅长讨厌自我。但这又是在跌入幽微的深渊时我才会去想的事情了。多数时刻，我只是伪饰着我的懒惰，以某种刻意的淡然和“摆烂”姿态生活着。&lt;/p&gt;
&lt;p&gt;“就这样无知地生活下去多么美好”，每当自认为窥破了什么真相，人们都会这么想，这听上去十分讽刺。可对自我的剖析似乎的确是这样的。在自我认知之外的缺陷似乎却算不上缺陷，你从未探索过这种可能，它的未来就永不会存在。你经历的选择越多，错过的岔路也就越多。&lt;/p&gt;
&lt;p&gt;但纵使有再多可能性又如何呢。一切创作都要有终稿的。&lt;/p&gt;
&lt;h2 id=&quot;paradise-noise&quot;&gt;Paradise Noise&lt;/h2&gt;
&lt;p&gt;曾经我无法理解听金属的人。我无法从混作一顿嘈杂的频率中找到快感或美感。这甚至与“噪声”不同（我挺喜欢 noise pop/rock），更像是一段乐音被压缩至极低的音质，再去辨认其中的音符。&lt;/p&gt;
&lt;p&gt;至少，高三下学期我是那么想的。那时我几乎整日被锁在学校，即使我愿意也无法将自己扔进耳机间的世界中，一切的乐章都是在脑中重现的。也是在那时，晚上回家的时段我相当沉迷于读日轻。我尤其喜欢的作者是杉井光，他所描写的音乐有一种火焰一般感人的能力，阅读他的文字时，我常思考，这世上是否真能有此“至乐”存在；但我却从来难 get 到他所热衷于，并为其音乐写下如此精彩文字的 beatles, led zeppelin 等乐队。&lt;/p&gt;
&lt;p&gt;那时的我自然无法理解，《乐园杂音》中真琴第一次走进录音室，所听见那种乐声时的心情。“从耳机中听音乐，对音乐的理解自然局限在耳机中”“耳机中的音乐，与现场所听见的音乐，是两种截然不同的世界”。&lt;/p&gt;
&lt;p&gt;那的确是一种不同的世界——仅仅拨片轻撩过琴弦的试音过程，心脏都止不住颤动。没有什么能够比拟使你脑后的发梢都被震动的音浪。锈蚀的电吉他声，与耳鸣混合为底噪的 bass 轰鸣，和每一击如同攥住你的呼吸、地狱一步步迫近的鼓点。但这些还不够重要。我爱的是音乐的天国，冷漠的城市中，噪音所怀抱的故乡。融化的人群。和那仿佛集体磕了药一样，无人能幸免的，牵动所有人体一切动作的节奏。年末去听刺猬 live 时，我甚至怀疑听众里正常人太多，以致氛围不足（当然这怀疑在《24 小时摇滚派对》响起后便烟消云散）。&lt;/p&gt;
&lt;p&gt;在听完夏末的第一场 live，回校的地铁上，我所想的大概与现在我回忆那些现场时相同：那些在心里一闪而过，描述现场所感的词句我已再无法捕捉。那晚回校后，我犹豫许久，最终还是没能落下一字。去重复那些我已想遍、写烂的主题简单却也无趣，可那新添的回忆却无处安放，无处寻找。&lt;/p&gt;
&lt;p&gt;常常有乐句像这些词语一样，在梦中、或其他莫名其妙的时刻闪现在我脑中。可惜我辨音能力极差，即使手边就有记录工具，也无法凭借旋律的哼唱还原出那些想必绝妙的旋律。仿佛陷入创作欲漫溢至腐烂的困境。&lt;/p&gt;
&lt;p&gt;每到某些时刻我会听着耳机中的旋律，相信音乐是信仰；某些时刻我觉得它们只是频率而已，和文字无差异，不过是一些曲线，数字的组合。意义的辩论似乎又在嘲讽着我了。&lt;/p&gt;
&lt;p&gt;也许吧，当这些起伏不再困扰我时，我终于能学会创作。&lt;/p&gt;
&lt;p&gt;Resory 于 26.1.1 凌晨&lt;/p&gt;
</description>
      </item>
      <item>
          <title>PE 随机做题寄录</title>
          <pubDate>Thu, 18 Dec 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.resorie.xyz/posts/perec/</link>
          <guid>https://blog.resorie.xyz/posts/perec/</guid>
          <description xml:base="https://blog.resorie.xyz/posts/perec/">&lt;p&gt;不定期持续（不保证）更新。&lt;/p&gt;
&lt;h2 id=&quot;pe169-sums-of-powers-of-two&quot;&gt;PE169 Sums of Powers of Two&lt;/h2&gt;
&lt;p&gt;date: 12.17 &lt;del&gt;diff: 50&lt;/del&gt; level: 16&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
&lt;p&gt;题意：定义 $f(n)$ 为 $n$ 表示为若干个 $2$ 的幂之和的形式，且每个幂出现次数最多两次的方案数。&lt;/p&gt;
&lt;p&gt;已知 $f(10)=5$。求 $f(10^{25})$。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;AI 用递推秒了。这里叙述一种我自己的神秘做法。&lt;/p&gt;
&lt;p&gt;考虑将 $n$ 的二进制表示从高次幂向低次幂“展开”。具体地说，将 $2^n$ 展开至 $k$ 次表示：&lt;/p&gt;
&lt;p&gt;$$
2^n=2^{n-1}+\dots+2\cdot2^k
$$&lt;/p&gt;
&lt;p&gt;发现这里的 $k$ 除了不能是原表示中已有的幂以外没有什么限制。于是我们可以安全地令这样的展开穿过某些中间的幂次 $2^m(k&amp;lt;m&amp;lt;n)$。注意展开到 $k$ 次之后所有高于 $k$ 次的幂都不能再展开了，于是可以递归求解。&lt;/p&gt;
&lt;p&gt;复杂度 $O(\log n)$。&lt;/p&gt;
&lt;details class=&quot;collapse-block&quot; &gt;
  &lt;summary class=&quot;collapse-summary&quot;&gt;
    &lt;span class=&quot;collapse-title&quot;&gt;code&lt;/span&gt;
    &lt;span class=&quot;collapse-icon&quot;&gt;&lt;/span&gt;
  &lt;/summary&gt;
  &lt;div class=&quot;collapse-content&quot;&gt;&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;from&lt;/span&gt;&lt;span&gt; functools&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; import&lt;/span&gt;&lt;span&gt; lru_cache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;from&lt;/span&gt;&lt;span&gt; math&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; import&lt;/span&gt;&lt;span&gt; log&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;def&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; bits&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8 z-d-i&quot;&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    l&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; =&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; for&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; in&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-1&quot;&gt; range&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-1&quot;&gt;int&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-d-3&quot;&gt;log&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-d-3&quot;&gt; log&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; if&lt;/span&gt;&lt;span&gt; N&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; //&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt;**&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; ==&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    l&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-d-3&quot;&gt;reverse&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    return&lt;/span&gt;&lt;span&gt; l&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;def&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; toN&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8 z-d-i&quot;&gt;l&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-1&quot;&gt; sum&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt;**&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; for&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; in&lt;/span&gt;&lt;span&gt; l&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;lru_cache&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-9 z-d-i&quot;&gt;maxsize&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;None&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;def&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; solve2&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8 z-d-i&quot;&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    bit&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-d-3&quot;&gt; bits&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    if&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-1&quot;&gt; len&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;bit&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; ==&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        return&lt;/span&gt;&lt;span&gt; bit&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;0&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    res&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; =&lt;/span&gt;&lt;span&gt; bit&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-d-3&quot;&gt; solve2&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-d-3&quot;&gt;toN&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;bit&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;1&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    for&lt;/span&gt;&lt;span&gt; ix&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; in&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-1&quot;&gt; range&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-1&quot;&gt; len&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;bit&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        res&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; +=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;bit&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;ix&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; -&lt;/span&gt;&lt;span&gt; bit&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;ix&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-d-1&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-d-3&quot;&gt; solve2&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-d-3&quot;&gt;toN&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;bit&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;ix&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    return&lt;/span&gt;&lt;span&gt; res&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-2 z-d-1&quot;&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-d-3&quot;&gt;solve2&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;h2 id=&quot;pe216-the-primality-of-2n-2-1&quot;&gt;PE216 The Primality of $2n^2-1$&lt;/h2&gt;
&lt;p&gt;date: 12.18 &lt;del&gt;diff: 45&lt;/del&gt; level: 13&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
&lt;p&gt;题意：令 $t(n)=2n^2-1$，求 $2\le n\le N$ 时有多少个 $n$ 使得 $t(n)$ 为素数。&lt;/p&gt;
&lt;p&gt;已知 $N=10000$ 时有 $2202$ 个。求 $N=5\times10^7$ 时有多少。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;del&gt;这种傻逼题怎么能有 45 difficulty 的啊？&lt;/del&gt; 为什么评论区还有一堆 Miller-Rabin 硬草过去的啊？&lt;/p&gt;
&lt;p&gt;直接筛 $t(n)$ 这个多项式即可。$p\mid t(n)\iff n\equiv \pm1/2\pmod p$。&lt;/p&gt;
&lt;p&gt;复杂度是常数比较小的 $O(N\log\log N)$。分块筛可以做到更小的时空复杂度。&lt;/p&gt;
&lt;details class=&quot;collapse-block&quot; &gt;
  &lt;summary class=&quot;collapse-summary&quot;&gt;
    &lt;span class=&quot;collapse-title&quot;&gt;code&lt;/span&gt;
    &lt;span class=&quot;collapse-icon&quot;&gt;&lt;/span&gt;
  &lt;/summary&gt;
  &lt;div class=&quot;collapse-content&quot;&gt;&lt;p&gt;没怎么优化，空间复杂度很大&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;bitset&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;cmath&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;iostream&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;random&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;utility&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;using&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; i64&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; long&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; long&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;using&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; pii&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span&gt; std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;pair&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; i64&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; N&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 5&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-9&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;7&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; L&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 8&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-9&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;7&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; primes&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; rt&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;bitset&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;L&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; isp&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;bitset&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; tn&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; fpow&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; b&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; m&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;    i64&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; m&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; m&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; m&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; sub&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; b&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; m&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; return&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; m&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; m&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; m&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;pii&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; mkp&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; first&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; second&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; return&lt;/span&gt;&lt;span&gt; std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;make_pair&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;first&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; second&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; chk_rt&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; return&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; fpow&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; ==&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-7 z-l-i z-d-4 z-d-i&quot;&gt;//&lt;/span&gt;&lt;span class=&quot;z-l-7 z-l-i z-d-4 z-d-i&quot;&gt; Cipolla&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; find_rt&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; ==&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; return&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 3&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; ==&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 3&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; return&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; fpow&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    static&lt;/span&gt;&lt;span&gt; std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;mt19937&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; rd&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;random_device&lt;/span&gt;&lt;span&gt;{}&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;    i64&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; r&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;        r&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; rd&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    while&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;chk_rt&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; sub&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; r&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    auto&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; mul&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; pii&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; const&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; pii&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt;b&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        return&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; mkp&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;a&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;first&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; b&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;first&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; a&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;second&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; b&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;second&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;a&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;first&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; b&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;second&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; a&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;second&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; b&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;first&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        )&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    auto&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; ppow&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; pii&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; b&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;        pii&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; mkp&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; bs&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; a&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; bs&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; mul&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;bs&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; bs&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;            if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; mul&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;res&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; bs&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        return&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; ppow&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;mkp&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;r&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;first&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; t&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; return&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    auto&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; append&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;        primes&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;push_back&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;        rt&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;push_back&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;find_rt&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 3&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; L&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +=&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class=&quot;z-l-7 z-l-i z-d-4 z-d-i&quot;&gt; //&lt;/span&gt;&lt;span class=&quot;z-l-7 z-l-i z-d-4 z-d-i&quot;&gt; odd&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;isp&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-7 z-l-i z-d-4 z-d-i&quot;&gt;            //&lt;/span&gt;&lt;span class=&quot;z-l-7 z-l-i z-d-4 z-d-i&quot;&gt; primes i satisfying 1/2 is a quadratic residue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;            if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;chk_rt&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; append&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;            for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 3&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; L&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;                isp&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; pcnt&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; primes&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;size&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; pcnt&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;        i64&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; primes&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;rt&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-7 z-l-i z-d-4 z-d-i&quot;&gt;        //&lt;/span&gt;&lt;span class=&quot;z-l-7 z-l-i z-d-4 z-d-i&quot;&gt; p|t(n) iff n^2 equiv 1/2 mod p iff n equiv pm c mod p&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;        i64&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; s1&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; s2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i64&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; N&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;            if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;s1&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; N&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; t&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;s1&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; !=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; tn&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;s1&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;            if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;s2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; N&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; t&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;s2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; !=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; tn&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;s2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; j&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; N&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;tn&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;cout&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt; &amp;#39;&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-1&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;cerr&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; clock&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; CLOCKS_PER_SEC&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;h2 id=&quot;pe433-steps-in-euclid-s-algorithm&quot;&gt;PE433 Steps in Euclid&#39;s Algorithm&lt;/h2&gt;
&lt;p&gt;date: 26.1.13 &lt;del&gt;diff: 65&lt;/del&gt; level: 30&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
&lt;p&gt;题意：考察欧几里得算法求 $\gcd(x,y)$ 的流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;令 $(x_0, y_0)=(x, y)$；&lt;/li&gt;
&lt;li&gt;递推计算 $(x_k, y_k)=(y_{k-1}, x_{k-1}\bmod y_{k-1})$；&lt;/li&gt;
&lt;li&gt;最终得到 $(x_n, y_n)=(\gcd(x,y),0)$。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;令 $E(x,y)=n$，即使用欧几里得算法求 $\gcd(x,y)$ 的运算步数。令 $S(N)=\sum_{1\le x,y\le N} E(x,y)$。&lt;/p&gt;
&lt;p&gt;求 $S(5\times 10^6)$。已知 $S(1)=1, S(10)=221, S(100)=39826$。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;神秘论文题。reference: &lt;a rel=&quot;external&quot; href=&quot;https://link.springer.com/content/pdf/10.1007/978-1-4615-4819-5_7.pdf&quot;&gt;https://link.springer.com/content/pdf/10.1007/978-1-4615-4819-5_7.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;首先显然根据对称性：&lt;/p&gt;
&lt;p&gt;$$
S(N)=\frac{N(N+1)}2+2\sum_{1\le y&amp;lt;x\le N}E(x,y)
$$&lt;/p&gt;
&lt;p&gt;论文中有结论，对 $n&amp;gt;2$：&lt;/p&gt;
&lt;p&gt;$$
f(n)=\sum_{1\le y&amp;lt;n}[n\perp y]E(n,y)=\frac32\varphi(n)+2r(n)
$$&lt;/p&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;p&gt;$$
r(n)=\sum_{x&amp;lt;y,x&#39;&amp;lt;y&#39;}[x\perp y][x&#39;\perp y&#39;][xx&#39;+yy&#39;=n]
$$&lt;/p&gt;
&lt;details class=&quot;collapse-block&quot; open&gt;
  &lt;summary class=&quot;collapse-summary&quot;&gt;
    &lt;span class=&quot;collapse-title&quot;&gt;对该结论的证明（upd 1.17）&lt;/span&gt;
    &lt;span class=&quot;collapse-icon&quot;&gt;&lt;/span&gt;
  &lt;/summary&gt;
  &lt;div class=&quot;collapse-content&quot;&gt;&lt;p&gt;我们知道欧几里得算法等价于用连分数表示 $\frac ab=[a_1,a_2,\ldots,a_k]$。考虑将 $E(a,b)$ 转换为这样的 $k(a,b)$。&lt;/p&gt;
&lt;p&gt;首先规定 $a&amp;gt;b$，这样就有 $a_1\ge 1$。再规定 $a,b$ 互质且 $a_k&amp;gt;1$，于是连分数的表示唯一。这样直接能得到 $E(a,b)=k(a,b)$，并且所有 $a_i\ge 1$。&lt;/p&gt;
&lt;p&gt;为了考察连分数的性质，我们引入 continuant（《具体数学》中译作“连项式”）。关于一系列变量 $a_1,a_2,\ldots,a_n$ 的 continuant $K(a_1,a_2,\ldots,a_n)$ 是被如下定义的多项式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;$n=0$ 时，$K=1$；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;$n=1$ 时，$K(a_1)=a_1$；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;$n\ge 2$ 时，有如下递归定义：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;$$
K(a_1,\ldots,a_n)=a_n K(a_1,\ldots,a_{n-1})+K(a_1,\ldots,a_{n-2})
$$&lt;/p&gt;
&lt;p&gt;以下对某个给定的数列 $\{a_n\}$，记 $Q(l,r)=K(a_l,\ldots,a_r)$。&lt;/p&gt;
&lt;p&gt;Continuant 的重要用处是，其可以表示连分数。具体而言有：&lt;/p&gt;
&lt;p&gt;$$
[a_1,\ldots,a_n]=\frac{Q(1, n)}{Q(2,n)}
$$&lt;/p&gt;
&lt;p&gt;Euler 的研究指出，如果从中间拆开 continuant，会有如下性质：&lt;/p&gt;
&lt;p&gt;$$
Q(1,n)=Q(1,i)\cdot Q(i+1,n)+Q(1,i-1)\cdot Q(i+2,n)
$$&lt;/p&gt;
&lt;p&gt;从 continuant 的形式不难发现 $K(a_l,a_{l+1},\ldots,a_r)=K(a_r,a_{r-1},\ldots,a_l)$。于是设：&lt;/p&gt;
&lt;p&gt;$$
[a_i,a_{i-1},\ldots,a_1]=\frac xy,\quad [a_{i+1},a_{i+2},\ldots,a_n]=\frac{x&#39;}{y&#39;}
$$&lt;/p&gt;
&lt;p&gt;那么有：&lt;/p&gt;
&lt;p&gt;$$
x=Q(1,i)\quad y=Q(1,i-1)\quad x&#39;=Q(i+1,n)\quad y&#39;=Q(i+2,n)
$$&lt;/p&gt;
&lt;p&gt;如果此时设数列 $\{a_n\}$ 满足 $\frac ab=[a_1,a_2,\ldots,a_n]$，那么就有：&lt;/p&gt;
&lt;p&gt;$$
a=xx&#39;+yy&#39;
$$&lt;/p&gt;
&lt;p&gt;根据连分数性质，显然会有 $x\perp y,x&#39;\perp y&#39;,x&#39;&amp;lt;y&#39;$。同时，只需要 $[a_i,\ldots,a_1]&amp;gt;1$ 就会有 $x&amp;lt;y$，这仅当 $a_1=i=1$ 时可能发生。&lt;/p&gt;
&lt;p&gt;现在我们可以开始计数。固定 $a$，枚举 $b$，来对 $a=Q(1,k(a,b))$ 的拆分计数：$i\in[2,k-1]$ 显然合法，再判断 $i=1$ 时是否有 $a_i=1$ 即可。即总切分数为：&lt;/p&gt;
&lt;p&gt;$$
C=\sum_{b\perp a}k(a,b)-1-[a_i=1]=\sum_{b\perp a}E(a,b)-\varphi(a)-\sum_{b}[a_i=1]
$$&lt;/p&gt;
&lt;p&gt;显然有 $a_i=1$ 当且仅当 $\lfloor a/b\rfloor =1$，这样的 $b$ 共 $\frac{\varphi(a)}2$ 个。即 $C=f(a)-\frac32\varphi(a)$。&lt;/p&gt;
&lt;p&gt;我们再考虑，之前将每一种拆分对应到了一个 $(x,y,x&#39;,y&#39;)$。但是注意到 $\frac xy$ 有两种连分数表示（因为没有规定末项 $a_1&amp;gt;1$），故每个四元组 $(x,y,x&#39;,y&#39;)$ 对应两个拆分。即 $C=2r(a)$。&lt;/p&gt;
&lt;p&gt;综上，我们得到&lt;/p&gt;
&lt;p&gt;$$
f(a)=\frac32\varphi(a)+2r(a)
$$&lt;/p&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;化简一下 $f$，去掉互质的要求：&lt;/p&gt;
&lt;p&gt;$$
g(n)=\sum_{1\le y&amp;lt;n}E(n,y)=\lfloor 3(n-1)/2\rfloor + 2\tilde r(n)
$$&lt;/p&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;p&gt;$$
\tilde r(n)=\sum_{x&amp;lt;y,x&#39;&amp;lt;y&#39;}[x\perp y][xx&#39;+yy&#39;=n]
$$&lt;/p&gt;
&lt;p&gt;回到和式，就变成简单莫反了。&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
\sum_{1\le y&amp;lt;x\le N}E(x,y)
=&amp;amp;\ \sum_{x=2}^Ng(x)\\
=&amp;amp;\ \sum_{x=2}^N\lfloor 3(x-1)/2\rfloor + 2\sum_{x&amp;lt;y,x&#39;&amp;lt;y&#39;}[x\perp y][xx&#39;+yy&#39;\le N]\\
=&amp;amp;\ \sum_{x=2}^N\lfloor 3(x-1)/2\rfloor + 2\sum_{d}\mu(d)\sum_{x&amp;lt;y,x&#39;&amp;lt;y&#39;}[xx&#39;+yy&#39;\le N/d]
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;还需要计算 $\sum_{x&amp;lt;y,x&#39;&amp;lt;y&#39;}[xx&#39;+yy&#39;\le n]$。枚举 $P=xx&#39;\le(n-1)/2=L$，将 $y&amp;gt;x,y&#39;&amp;gt;x&#39;$ 的限制利用容斥拆开：&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
&amp;amp;\ \sum_{x&amp;lt;y,x&#39;&amp;lt;y&#39;}[xx&#39;+yy&#39;\le n]\\
=&amp;amp;\ \sum_{xx&#39;\le L}\left(\sum_{y,y&#39;}[yy&#39;\le n-xx&#39;](1-[y\le x] - [y&#39;\le x&#39;]+[y\le x,y&#39;\le x&#39;])\right)\\
=&amp;amp;\ \sum_{xx&#39;\le L}\left(D(n-xx&#39;)-\sum_{y\le x}\lfloor\frac{n-xx&#39;}{y}\rfloor-\sum_{y&#39;\le x&#39;}\lfloor\frac{n-xx&#39;}{y&#39;}\rfloor+xx&#39;\right)\\
=&amp;amp;\ \sum_{P=1}^{L}\left(d(P)D(n-P)+d(p)P-2\sum_{x\mid P}\sum_{y\le x} \lfloor\frac{n-P}{y}\rfloor\right)
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;其中 $d(n)=\sum_{d\mid n}1,D(n)=\sum_{i=1}^nd(i)$。前面两项容易计算。最后一项拎出来计算：&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
\sum_{P=1}^{L}\sum_{x\mid P}\sum_{y\le x}\lfloor\frac{n-P}y\rfloor
=&amp;amp;\ \sum_{x=1}^L\sum_{k=1}^{L/x}\sum_{y=1}^x\lfloor\frac{n-kx}{y}\rfloor\\
=&amp;amp;\ \sum_{y=1}^L\sum_{k=1}^{L/y}\sum_{x=y}^{L/k}\lfloor\frac{n-kx}{y}\rfloor\\
=&amp;amp;\ \sum_{y=1}^L\sum_{k=1}^{L/y}\sum_{x=0}^{L/k-y}\lfloor\frac{n-k(L/k)+kx}{y}\rfloor
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;最内层的一个和式可以类欧 $O(\log n)$ 计算。枚举外面的两层进行求和，复杂度总共为 $O(n\log^2 n)$。&lt;/p&gt;
&lt;p&gt;复杂度（设 $f(n)=O(n\log^2 n)$）：&lt;/p&gt;
&lt;p&gt;$$
T(N)\approx O\left(\sum_{n\le \sqrt N}f(n)+f(N/n)\right)=O(N\log^3 N)
$$&lt;/p&gt;
&lt;details class=&quot;collapse-block&quot; &gt;
  &lt;summary class=&quot;collapse-summary&quot;&gt;
    &lt;span class=&quot;collapse-title&quot;&gt;code&lt;/span&gt;
    &lt;span class=&quot;collapse-icon&quot;&gt;&lt;/span&gt;
  &lt;/summary&gt;
  &lt;div class=&quot;collapse-content&quot;&gt;&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;iostream&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;typedef&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; long&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; long&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; ll&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; ll&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; N&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 5&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-9&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;6&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; primes&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; mu&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;vector&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;ll&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; d&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; D&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; Init&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;vector&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;bool&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; isp&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 5&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; true&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;vector&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; e&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 5&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;    mu&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;resize&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 5&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; d&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;resize&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 5&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; D&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;resize&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 5&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;    mu&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; d&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; e&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    auto&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; append&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;        primes&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;push_back&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; mu&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; d&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; e&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;isp&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; append&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; p&lt;/span&gt;&lt;span&gt; :&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; primes&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;            if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;            isp&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; false&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;            if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt;!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;                mu&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;                d&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; d&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;e&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;e&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;                e&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; e&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;                break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;            mu&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;mu&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;            d&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; d&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; e&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;        D&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; D&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; d&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; mu&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; mu&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;ll&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; f&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;ll&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; ll&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; b&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; ll&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; c&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; ll&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; return&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt; ||&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        return&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;               f&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;    ll&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; m&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; m&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; f&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;c&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; c&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; m&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;ll&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; S&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;    ll&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; T&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; L&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;        res&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; d&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;D&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; L&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;        for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; t&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; L&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; k&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; k&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; t&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; k&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;            T&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +=&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; f&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;k&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; L&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; k&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; k&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; L&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; k&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; res&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; T&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;    Init&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;    ll&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; ans&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; N&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; N&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;        ans&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +=&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 3&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-9&quot;&gt;LL&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; r&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; t&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; l&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; l&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; N&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; l&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; r&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;        t&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; N&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; l&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; r&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; N&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; t&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;        ans&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +=&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 4&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-9&quot;&gt;LL&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; S&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;t&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;mu&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;r&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; mu&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;cout&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; ans&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt; &amp;#39;&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-1&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    std&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;cout&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; clock&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; CLOCKS_PER_SEC&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt; &amp;#39;&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-1&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;z-l-4 z-d-5&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;h2 id=&quot;pe443-gcd-sequence&quot;&gt;PE443 GCD Sequence&lt;/h2&gt;
&lt;p&gt;date: 26.1.16 &lt;del&gt;diff: 30&lt;/del&gt; level: 10&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
&lt;p&gt;题意：$g(4)=13$, $g(n)=g(n-1)+\gcd(g(n-1), n)\quad(n\ge 5)$。&lt;/p&gt;
&lt;p&gt;已知 $g(1000)=2524, g(1000000)=2624152$。求 $g(10^{15})$。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;观察数列的前几项，发现经常出现连续数字，说明这一段中的递推式中的 $\gcd$ 项都为 $1$。如果我们能知道这一段的长度，就可以快速地跳过这一段。&lt;/p&gt;
&lt;p&gt;假设这一段中的第一项为 $g(m)=m+k$。我们需要找到最小的 $t$，使 $\gcd(g(m+t),m+t+1)=\gcd(k-1,m+t+1)&amp;gt;1$。这里没有什么好方法，把 $k-1$ 所有的因数试一遍即可。&lt;/p&gt;
&lt;p&gt;这个数列的行为不太好估计。体感复杂度不太低，但是跑起来很快，几秒就出来了。&lt;/p&gt;
&lt;h2 id=&quot;pe266-pseudo-square-root&quot;&gt;PE266 Pseudo Square Root&lt;/h2&gt;
&lt;p&gt;date: 1.20 &lt;del&gt;diff: 65&lt;/del&gt; level: 29&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
&lt;p&gt;令 $p$ 为所有不超过 $190$ 的素数之积。求 $p$ 不超过其平方根的最大因子。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;已完成今日看不懂 pe 难度评分大学习。&lt;/p&gt;
&lt;p&gt;$190$ 以内共 $n=42$ 个素数。取对数之后 meet-in-the-middle 搜即可。复杂度 $O(n2^{n/2})$。&lt;/p&gt;
&lt;h2 id=&quot;pe700-eulercoin&quot;&gt;PE700 Eulercoin&lt;/h2&gt;
&lt;p&gt;date: 9.1 level: 11&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
&lt;p&gt;令 $A=1504170715041707$，$B=4503599627370517$。求数列 $\{Ai \bmod B\}_{i\ge 1}$ 所有前缀最小值的和。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;$Ai\bmod B$ 容易写成 $Ai-Bj$ 的形式；要让其最小，即需用 $j/i$ 从左侧逼近 $\alpha=A/B$。注意到 $|Ai-Bj|=B|i\alpha-j|$ 其实相当于第二类最佳逼近的误差，也就是说，我们只需要数所有左侧第二类最佳逼近。&lt;/p&gt;
&lt;p&gt;写出连分数表示 $A/B=[0;a_1,a_2,\ldots,a_k]$ 和所有渐近分数 $r_k=p_k/q_k=[0;a_1,\ldots,a_k]$，那么所有 $r_0,r_2,r_4,\ldots$ 都是第二类最佳逼近，且小于 $A/B$。&lt;/p&gt;
&lt;p&gt;不过还有问题：由于现在是单侧逼近，不能直接套第二类最佳逼近的结论。考察半收敛子 $r_{k,t}=[0;a_1,a_2,\ldots,a_{k-1},t]$（$1\le t&amp;lt;a_k$），其第二类逼近误差劣于 $r_k$ 和 $r_{k-1}$，却比 $r_{k-2}$ 优。这类半收敛子也要计入。&lt;/p&gt;
&lt;p&gt;现在可以得到 $O(\log(A+B))$ 的算法：求出连分数表示，并递推渐近分数的分子和分母；半收敛子通过递推公式批量统计，最后取模即可。&lt;/p&gt;
</description>
      </item>
      <item>
          <title>冒泡潜水</title>
          <pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.resorie.xyz/posts/mpqs/</link>
          <guid>https://blog.resorie.xyz/posts/mpqs/</guid>
          <description xml:base="https://blog.resorie.xyz/posts/mpqs/">&lt;p&gt;填一个&lt;a rel=&quot;external&quot; href=&quot;https://www.luogu.com.cn/article/vy3tfjw4&quot;&gt;坑&lt;/a&gt;。这个鸽了三年多了。&lt;/p&gt;
&lt;h2 id=&quot;preface&quot;&gt;Preface&lt;/h2&gt;
&lt;p&gt;众所周知，Pollard-Rho 能以 $O(n^{1/4}\log n)$ 的时间复杂度（通过一定优化能做到 $O(n^{1/4})$）找到合数 $n$ 的一个非平凡因子。但事实上，我们有更快的方法做到这件事。&lt;/p&gt;
&lt;p&gt;本篇文章将介绍一种亚指数级复杂度分解质因数的算法：二次筛法（Quadratic Sieve, QS）。&lt;/p&gt;
&lt;p&gt;注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本篇文章中的复杂度分析将不包含对大整数进行运算的开销。&lt;/li&gt;
&lt;li&gt;本篇文章偏教程向，会混杂很多比较 trivial 的内容。&lt;/li&gt;
&lt;li&gt;其实我自己写的代码基本是贺的 zzt 的提交并加以修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;smooth-numbers&quot;&gt;Smooth Numbers&lt;/h2&gt;
&lt;p&gt;数论中，一般认为素数的性质是比较好的。比较自然地，研究合数时，我们会希望研究那些“比较素”的合数。&lt;/p&gt;
&lt;p&gt;对这样比较好的合数的刻画，容易会想到，使用素因子较少的合数。但这显然是荒谬的，因为质因数分解并不容易：对于大素数 $p,q$，合数 $n=pq$ 很难被逆向表示为 $p,q$。&lt;/p&gt;
&lt;p&gt;因而，我们转向另一个方向：研究&lt;em&gt;素因子较小&lt;/em&gt;的合数，这便引出了 &lt;strong&gt;smooth numbers&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;称一个数是 $y\text{-smooth}$ 的，当且仅当其所有质因子不超过 $y$。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;容易发现，smooth number 的一个很好的性质是，它们容易被分解。我们只需简单筛出不超过阈值 $y$ 的素数 $p_1,p_2,\dots,p_k$，便能通过简单的试除法（因为 $y$ 相对较小，这些开销是可以承受的）确定 $n$ 的分解。&lt;/p&gt;
&lt;p&gt;于是，我们会萌生一个想法：对于不 smooth 的 $n$，我们能否通过某些方法将其转化为比较 smooth 的数，再对其进行操作？想必，转化之后的操作应当是简单的。&lt;/p&gt;
&lt;p&gt;事实上，数论中许多算法，如 Index Calculus 和本篇文章所要介绍的 Quadratic Sieve 都基于这样的转化。&lt;/p&gt;
&lt;h3 id=&quot;smooth-number-de-mi-du&quot;&gt;Smooth Number 的密度&lt;/h3&gt;
&lt;p&gt;Smooth number 的密度由 Dickman 函数给出：&lt;/p&gt;
&lt;p&gt;$$
\psi(x,y):=\left|\left\{i\le x\mid i \text{ is } y\text{-smooth}\right\}\right|
$$&lt;/p&gt;
&lt;p&gt;当 $x\to\infty$ 时，有：&lt;/p&gt;
&lt;p&gt;$$
\psi(x,y)\sim x \rho(u)\quad\text{where }x=y^u
$$&lt;/p&gt;
&lt;p&gt;其中 $\rho(u)$ 是 Dickman-de Brujin 函数。这表明，当 $x$ 足够大时，smooth number 的密度不依赖于具体的 $x,y$，而只和 $u=\frac{\ln x}{\ln y}$ 有关。&lt;/p&gt;
&lt;p&gt;Dickman 证明了如下估计：&lt;/p&gt;
&lt;p&gt;$$
\rho(u)\approx u^{-u+o(u)}
$$&lt;/p&gt;
&lt;p&gt;证明涉及微分学，这里不作详细展开。&lt;/p&gt;
&lt;h2 id=&quot;quadratic-sieve&quot;&gt;Quadratic Sieve&lt;/h2&gt;
&lt;h3 id=&quot;dixon-s-random-square-method&quot;&gt;Dixon&#39;s Random Square Method&lt;/h3&gt;
&lt;p&gt;我们的算法基于以下思想：若能找到 $\alpha^2\equiv \beta^2\pmod N$ 且 $\alpha\not\equiv\pm \beta$，那么 $\gcd(\alpha+\beta,N)$ 能够给出一个 $N$ 的非平凡因子。问题在于，我们如何生成这样的 $\alpha, \beta$。&lt;/p&gt;
&lt;p&gt;一个比较简单的想法是随机。我们随机这样的一个 $\alpha_i$ 并计算 $\gamma_i:=\alpha_i^2\bmod N$，这是一个模 $N$ 意义下的二次剩余。我们希望找到 $\gamma_i$ 的一个非平凡平方根 $\beta_i$。假定 $\gamma_i\perp N$，那么 $N$ 的每个质因子对应了 $x^2\equiv \gamma_i$ 的两个根，因而找到的 $\beta_i\equiv\pm \alpha_i$ 的概率只有 $\frac{1}{2^{\omega(N)-1}}\le \frac 12$。&lt;/p&gt;
&lt;p&gt;理想情况下，若 $\gamma_i$ 是比较 smooth 的，我们可以对其分解 $\gamma_i=\prod p_j^{e_{i,j}}$。若 $\forall j$ 有 $2\mid e_{i,j}$，那么我们可以轻易地令 $\beta_i=\prod p_j^{e_{i,j}/2}$，这便得到一组 $\alpha,\beta$。&lt;/p&gt;
&lt;p&gt;当然，我们运气应当不致于这么好，不仅 $\gamma_i$ 是 smooth 的，而且 $e_{i,j}$ 都是偶数。前者我们只能寄希望于概率，但是后者我们可以想想办法。考虑选取多个 $\alpha_i$ 并计算 $\gamma_i$，再令向量 $\boldsymbol v_i=(e_{i,1}\bmod 2,e_{i,2}\bmod 2,\dots,e_{i,k}\bmod 2)\in \mathbb Z_2^n$。如果我们能找到一些线性相关的 $\boldsymbol v_i$，即存在指标集 $I$ 使得 $\sum_{i\in I}\boldsymbol v_i=\boldsymbol 0$，那么可以取&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
\alpha:=&amp;amp;\prod_{i\in I}\alpha_i\\\
\gamma:=&amp;amp; \prod_{i\in I}\gamma_i=\prod p_j^{\sum_{i\in I} e_{i,j}}\\
\beta:=&amp;amp;\prod p_j^{\left(\sum_{i\in I}e_{i,j}\right)/2}
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;一般的实现中，可以令 $\beta_i:=\prod p_j^{\left\lfloor e_{i,j} / 2\right\rfloor}$，那么就有：&lt;/p&gt;
&lt;p&gt;$$
\beta=\prod_{i\in I} \beta_i\cdot\prod p_j^{\left(\sum_{i\in I}e_{i,j}\bmod 2\right) / 2}
$$&lt;/p&gt;
&lt;p&gt;假设选取的 smooth 阈值为 $B$，那么我们就是有若干个 $\pi(B)$ 维的向量。只要我们找到 $\pi(B)+k$ 个向量，我们就能通过高斯消元找出 $k$ 组 $\alpha,\beta$，每组至少有 $\frac 12$ 概率成功分解，那么总的分解成功概率就是 $1-2^{-k}$。&lt;/p&gt;
&lt;h4 id=&quot;fu-za-du-fen-xi&quot;&gt;复杂度分析&lt;/h4&gt;
&lt;p&gt;&lt;del&gt;我被一篇傻逼文献骗了好久&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;显然该方法的复杂度依赖于阈值 $B$ 的选取。为方便计算，令 $k = \pi(B),u=\frac{\ln N}{\ln B}$。&lt;/p&gt;
&lt;p&gt;$\gamma_i=\alpha_i^2\bmod N$ 是模 $N$ 的二次剩余，它大约在 $1\sim N$ 中均匀分布，因此我们可以用前面的 smooth number 密度公式估算它 smooth 的概率，即 $u^{-u}$。我们需要找到 $O(k)=O\left(\frac{B}{\ln B}\right)$ 个向量。每次尝试需要 $k$ 次试除。最后，我们需要进行高斯消元。故可得到：&lt;/p&gt;
&lt;p&gt;$$
T\approx k^2u^u+k^3
$$&lt;/p&gt;
&lt;p&gt;这种式子谁爱算谁算，我扔给 AI 了。算出来 $T$ 最小时有：&lt;/p&gt;
&lt;p&gt;$$
B\approx \exp(\frac 1{\sqrt2}\sqrt{\ln N\cdot\ln\ln N}) \\
T\approx\exp(\frac 3{\sqrt2}\sqrt{\ln N\cdot\ln\ln N})
$$&lt;/p&gt;
&lt;h4 id=&quot;the-l-notation&quot;&gt;The L-notation&lt;/h4&gt;
&lt;p&gt;细心的读者容易发现上面的 $B$ 和 $T$ 有相似的结构。事实上，这种结构的渐进表示在 smooth number 相关算法中相当常见。&lt;/p&gt;
&lt;p&gt;一般地，我们定义 &lt;strong&gt;L-notation&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;$$
L_n[\alpha, c]:=\exp\left(\left(c+o(1)\right)\left(\ln n\right)^\alpha\left(\ln \ln n\right)^{1-\alpha}\right)\quad \text{where }c&amp;gt;0, 0\le\alpha\le1
$$&lt;/p&gt;
&lt;p&gt;该函数的增长量级主要由 $\alpha$ 控制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\alpha=1$ 时，$L_n[1,c]=O\left(n^{c+o(1)}\right)$（指数级复杂度）&lt;/li&gt;
&lt;li&gt;$\alpha=0$ 时，$L_n[0,c]=O\left((\ln n)^{c+o(1)}\right)=O(\text{polylog})$&lt;/li&gt;
&lt;li&gt;$\alpha\in(0,1)$ 时，$L_n[\alpha,c]$ 表示亚指数级复杂度。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是我们可以重新表示上面结果中的 $B,T$：&lt;/p&gt;
&lt;p&gt;$$
B=L_N\left[\frac 12,\frac1{\sqrt 2}\right]\\
T=L_N\left[\frac 12,\frac3{\sqrt2}\right]
$$&lt;/p&gt;
&lt;p&gt;读者可以自行尝试证明该算法复杂度的另一种方法：设 $B=L_N[1/2,c]$ 并带入以上复杂度式子，解出 $c$。&lt;/p&gt;
&lt;h4 id=&quot;optimized-dixon&quot;&gt;Optimized Dixon&lt;/h4&gt;
&lt;p&gt;朴素的 Dixon 方法使用了随机选取的 $\alpha$，因而 $\gamma:=\alpha^2\bmod N$ 的 smoothness 似乎没有保证。我们会希望使用更好的 $\alpha$ 来优化这一点。&lt;/p&gt;
&lt;p&gt;一个比较显然的想法是选择 $\alpha_i=\left\lceil \sqrt N\right\rceil+i$。当 $i$ 不太大时，这样得到的 $\gamma_i\sim2i\sqrt N$ 比较小，应当会比较 smooth。&lt;/p&gt;
&lt;p&gt;假设我们需要 $M$ 个这样的 $\alpha_i$，那么应当有 $\gamma_i \sim 2M\sqrt N$，以这个数为上限套用之前的 smooth number 密度公式，计算得到，当 $B=L_N[1/2,1/2]$ 时，有 $T\approx L_N[1/2,3/2]$。&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://loj.ac/s/2472888&quot;&gt;一个未作太多优化的实现&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;qs&quot;&gt;QS&lt;/h3&gt;
&lt;p&gt;以上的算法在 $N\approx 10^{30}$ 时就略显吃力。我们当然不满足于此。&lt;/p&gt;
&lt;p&gt;注意到上面算法的复杂度瓶颈在于，对于每个 $\alpha_i$，我们都必须通过试除法确定 $\gamma_i$ 是否是 smooth 的。由于选取合适的 $\alpha_i$ 需要大量的尝试，这样反复试除的开销会变得不可接受。考虑如何减少试除次数。&lt;/p&gt;
&lt;p&gt;我们都知道求质数可以用筛法，其实求 smooth 数也可以。更进一步，我们还可以筛多项式（因为 $p\mid f(c)\Leftrightarrow p\mid f(kp+c)$），比如一般的埃氏筛就是在筛 $f(i)=i$（如果跳过偶数可看作在筛 $f(i)=2i+1$）。&lt;/p&gt;
&lt;p&gt;考察这样一个多项式：$f(x)=x^2-N$。当 $i$ 较小时，有 $f\left(\left\lceil\sqrt N\right\rceil+i\right)=\alpha_i^2\bmod N$。我们希望筛一下它来优化上面的 Optimized Dixon 中的试除法。&lt;/p&gt;
&lt;p&gt;类似埃氏筛地，我们枚举小质数 $p$。若 $p^k\mid f(i)$ 就将 $p^k$ 从 $f(i)$ 的值中除去，筛完一遍变成 $1$ 的就是 smooth 的 $f(i)$。若我们有 $c$ 是 $N$ 在模 $p$ 意义下的二次剩余，那么当且仅当 $x\equiv \pm c\pmod p$ 时会有 $p\mid f(x)$，枚举每个 $x$ 并筛去 $p$ 即可。&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://loj.ac/s/2473437&quot;&gt;一个实现&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&quot;you-hua&quot;&gt;优化&lt;/h4&gt;
&lt;p&gt;对 QS 的改进方案中，提升较大的是选择更好的多项式去筛，这点留待后文详叙。这里讲几个小优化。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;$f(i)$ 和 $f(-i)$ 可以一起筛。注意消元的时候要把负号消掉。&lt;/li&gt;
&lt;li&gt;注意到 $p\mid f(i)$ 当且仅当 $N$ 是模 $p$ 意义下的二次剩余，因此在筛小素数时可以算一下 Legendre 符号 $\left(\frac  Np \right)$，如果不为 $1$ 这个素数就是没用的。&lt;/li&gt;
&lt;li&gt;如果 $f(i)$ 除掉小质数还剩一个不太大的数（一般的阈值是 $B^2$），可以把剩下这个值扔到 &lt;code&gt;std::unordered_map&lt;/code&gt; 里。如果后面找到的 $f(j)$ 剩下同样的数，那么可以使用 $f(i)f(j)$，这个剩下的值就被平方了，乘到 $\beta$ 里即可。（Lenstra 等提出，数据范围足够大时，可以尝试将除剩下的数分解为两个不大于 $B^2$ 的数的乘积，并放到图上求解&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/mpqs/#fn-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;）&lt;/li&gt;
&lt;li&gt;为了节省空间，我们在筛 $f$ 时通常无法直接算出 $\beta_i$ 和 $\boldsymbol v_i$，而需要对筛出的 smooth 的 $f$ 再进行一次试除。这就使得筛 $f$ 时的一堆大整数除法有点意义不明。可以考虑使筛 $f$ 的条件变松：我们计算其对数，如果 $\log f(i) $ 减去 $ \sum_{p_j\mid f(i)}\log p_j$ 比较小，那么这个 $f(i)$ 大概会比较 smooth，再对其进行试除即可。&lt;/li&gt;
&lt;li&gt;朴素的高斯消元会成为算法的复杂度瓶颈。注意到 $\boldsymbol v_i$ 中至多有 $O(\log N)$ 个数非零，这说明我们最终要进行高斯消元的矩阵是一个稀疏矩阵。可以使用 Block Wiedemann 或 Block Lanczos 算法（Montgomery 给出过一种为素因数分解特化的在 $GF(2)$ 上的 Block Lanczos&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;https://blog.resorie.xyz/posts/mpqs/#fn-2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;）将消元部分复杂度降至 $O(k^2\log N)$。实现中可以使用 &lt;code&gt;std::bitset&lt;/code&gt; 优化的在线高斯消元，性能不会有明显劣势。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&quot;fu-za-du-fen-xi-1&quot;&gt;复杂度分析&lt;/h4&gt;
&lt;p&gt;同 Dixon，我们需要筛出 $O(k)$ 个数，每个数成功概率为 $u^{-u}$，筛每个数的成本为 $\sum_{p\le B}p^{-1}=O(\log\log B)$。高斯消元复杂度 $O(k^2\log N)$。故有：&lt;/p&gt;
&lt;p&gt;$$
T\approx ku^u\log\log B+k^2\log N
$$&lt;/p&gt;
&lt;p&gt;当 $T$ 最小时，有：&lt;/p&gt;
&lt;p&gt;$$
B\approx \exp(\frac 12\sqrt{\log N\log\log N})=L_N\left[\frac 12,\frac12\right]\\
T\approx\exp(\sqrt{\log N\log \log N})= L_N\left[\frac 12,1\right]
$$&lt;/p&gt;
&lt;h3 id=&quot;mpqs&quot;&gt;MPQS&lt;/h3&gt;
&lt;p&gt;Multiple Polynomial Quadratic Sieve，简称 MPQS &lt;del&gt;（标题冒泡潜水的由来）&lt;/del&gt;。&lt;/p&gt;
&lt;p&gt;朴素 QS 的问题是，当 $N$ 较大时，我们需要筛的 $f(i)$ 个数（设为 $M$）会较大，而 $f(i)\sim 2M\sqrt N$ 也会较大，这使得 $f$ 较 smooth 的猜想不再成立。为了解决这个问题，Montgomery 提出：我们可以筛多个多项式。&lt;/p&gt;
&lt;p&gt;具体而言，我们希望用一个线性函数 $ax+b$ 替代之前的 $x$，即考虑 $(ax+b)^2-N$。如果 $b^2\equiv N\pmod a$，那么 $(ax+b)^2-n$ 可以写成 $af(x)=a(ax^2+2bx+c)$ 的形式，其中 $b^2-ac=N$。为了方便处理，我们设 $a$ 是一个 smooth 数的平方（比如 $p^2$，也有文献建议取一系列小素数乘积的平方），那么我们只需要去筛 smooth 的 $f(x)$。&lt;/p&gt;
&lt;p&gt;假设我们只去筛 $|x|\le M$ 的 $x$。与之前同样地，我们希望使 $|f(x)|$ 较小以使得其较 smooth。根据中学数学知识，我们会希望抛物线对称轴 $x=-\frac ba$ 靠近所筛区间 $[-M,M]$ 的中点 $x=0$，这要求 $b$ 较小。另外，我们希望区间端点和中点处 $|f(x)|$ 值相近，即 $|f(M)|\approx |f(0)|$，解出 $a\approx\frac{\sqrt{2N}}{M}$。&lt;/p&gt;
&lt;p&gt;实现中，我们可以从 $\frac{(2N)^{1/4}}{M^{1/2}}$ 开始枚举小素数 $p$，令 $a=p^2$，取 $b$ 为 $b^2\equiv N\pmod a$ 的较小解，再算出 $c$。然后按照 QS 的方法筛 $(ax+b)^2-N$ 即可。&lt;/p&gt;
&lt;p&gt;MPQS 相比于 QS 复杂度不变，但有较大常数优势。zzq 说有分析认为提升倍数是 $\frac 12\sqrt{\ln N\ln\ln N}$，我不知道是怎么算出来的。&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://loj.ac/s/316691&quot;&gt;zzt 的实现&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;hmpqs&quot;&gt;HMPQS&lt;/h3&gt;
&lt;p&gt;The Hypercube variation of Multiple Polynomial Quadratic Sieve，简称 HMPQS。&lt;/p&gt;
&lt;p&gt;Peralta 提出，MPQS 中切换多项式还要重算一遍 $b,c$ 之类的，比较麻烦。考虑生成一些有联系的多项式来消灭掉这个代价。&lt;del&gt;其实和 Hypercube 没啥必然联系，Peralta 为了容易理解随便举的例子&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;我们发扬光大一下 MPQS 中的一个细节。令 $t$ 为 $n$ 个素数的乘积（$t:=\prod_{i=1}^nq_i$），且 $t\sim N^{1/4}$。假设 $a=t^2$，$b$ 为方程 $b^2\equiv N\pmod {t^2}$ 的一个解。显然这里 $b$ 有 $2^n$ 个解。我们希望这样所生成出的 $2^n$ 个 $(ax+b)^2$ 有比较好的性质。&lt;/p&gt;
&lt;p&gt;首先考虑如何表示 $b$。由 CRT，只需解出 $\alpha_i^2\equiv N\pmod {q_i^2}$，那么就可以令 $b=\sum \delta_i\alpha_i\beta_i$，其中 $\delta_i=\pm1$，$\beta_i$ 是 CRT 算出的系数。$\alpha_i$ 有两个解，此处我们选择使得 $\gamma_i:=\alpha_i\beta_i\bmod t^2\le\frac{t^2}2$ 的解。&lt;/p&gt;
&lt;p&gt;然后考虑如何遍历所有的 $b$。令数列 $s_1,\dots,s_{2^n}$ 遍历所有的 $b$ 解。我们希望遍历过程中每次只更改一个 $\delta_i$，那么可以有递推关系：&lt;/p&gt;
&lt;p&gt;$$
s_{i+1}=s_i+2\mu_i\gamma_{k_i}-\omega_it^2
$$&lt;/p&gt;
&lt;p&gt;其中 $\mu_i=\pm 1$，代表 $\delta_{k_i}$ 的改变。Peralta 的叙述中把这个递推关系理解为 $n$ 维 Hypercube 上的一个 Hamilton 路径，$\mu_i$ 代表第 $k_i$ 维坐标的改变；当然其实还有其他理解方法，比如相信大家都知道格雷码，原理是类似的。$\omega_i$ 可以理解为对 $t^2$ 取模的一个修正系数，使得 $s_{i+1}\in(0,t^2)$。由之前对 $\alpha_i$ 的选择，有 $\omega_i\in\{\pm 1,0\}$。一般的实现中可以直接取 $\omega_i\equiv 0$，此时仍有 $s_i\in(-nt^2,nt^2)$。&lt;/p&gt;
&lt;p&gt;当然我们并不关心具体值。在筛法中，$s_i$ 作为多项式的系数，我们关心其模 $p$ 意义下的值。Peralta 提出，为了方便计算 $s_i\bmod p$，我们可以打表一下其差分。令：&lt;/p&gt;
&lt;p&gt;$$
\Delta_i:=s_{i+1}-s_i=2\mu_i\gamma_{k_i}-\omega_it^2
$$&lt;/p&gt;
&lt;p&gt;注意到 $\mu_i$ 有两种取值，$\omega_i$ 有三种取值，$\gamma_i$ 有 $n$ 种取值，那么 $\Delta_i$ 至多有 $6n$ 种取值（如果固定 $\omega_i=0$ 则只有 $2n$ 种）。这个可以打表算出来。那么转移就只需极小的代价。&lt;/p&gt;
&lt;p&gt;现在可以构造我们需要的多项式了。对 MPQS 中的多项式略作变换，除掉 $a$ 这个平方因子，就得到我们构造的多项式：&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
f_i(x):=&amp;amp;\ (s_i/t+x t)^2\bmod N\\
=&amp;amp;\ \frac{s_i^2-N}{t^2}+2s_ix+x^2t^2
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;我们仍须验证这样生成的 $f_i(x)$ 不太大，以保证其 smooth 的概率。假设我们要筛的区间是 $x\in[-M,M]$，我们取 $t\le\frac{N^{1/4}}{\sqrt M}$。由于 $s_i^2&amp;lt;t^4&amp;lt;N$，通过简单放缩可以得到 $\frac{s_i^2-N}{t^2}&amp;lt;0$ 且 $\left|\frac{s_i^2-N}{t^2}\right|\le M\sqrt N$。二次项 $x^2t^2\le M^2\left(\frac{N^{1/4}}{\sqrt M}\right)^2=M\sqrt N$。一次项 $2s_ix\le 2M\sqrt N$。因此我们大概有 $f_i(x)=O(M\sqrt N)$，这说明其值不太大，也就保证其大概比较 smooth。&lt;/p&gt;
&lt;p&gt;在筛法中，令 $p\mid f_i(x)$，容易得到 $x\equiv(-s_i\pm\sqrt N)t^{-2}\pmod p$。这就得到筛 $f_i(x)$ 的两个起点：&lt;/p&gt;
&lt;p&gt;$$
D_i=(-s_i+\sqrt N)t^{-2}\bmod p\\
E_i=(-s_i-\sqrt N)t^{-2}\bmod p=(D_i-2\sqrt Nt^{-2})\bmod p
$$&lt;/p&gt;
&lt;p&gt;$s_i\bmod p$ 容易由上述递推算出。如果预先算出 $\sqrt N\bmod p, t^{-2}\bmod p,2\sqrt Nt^{-2}\bmod p$，就可以很快算出 $D_i,E_i$。这就节省了切换多项式的时间。&lt;/p&gt;
&lt;p&gt;还剩下最后一个细节：如果 $p\mid t$，那么以上同余式的推导不成立。事实上，当 $p\mid t$ 时，当且仅当 $x\equiv -\frac{(s_i^2-N)/t^2}{2s_i}\pmod p$ 时有 $p\mid f_i(x)$，即某个 $x$ 使得 $p\mid f_i(x)$ 的概率减半为 $1/p$。这提示我们，$t$ 的因数尽量不要选取 smooth check 所使用的小素数，以增大 $f_i(x)$ smooth 的概率。实现中，我们可以选择素数 $q\in[B,2B]$ 来生成 $t$，这样大约有 $n\approx\log_B N\approx2\sqrt\frac{\log N}{\log\log N}$。&lt;/p&gt;
&lt;p&gt;&lt;del&gt;我并没有写这个的代码&lt;/del&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://zhuanlan.zhihu.com/p/106650020&quot;&gt;zzq&#39;s blog&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://en.wikipedia.org/wiki/Quadratic_sieve&quot;&gt;Quadratic Sieve - Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prime Numbers: A Computational Perspective (Crandall, Pomerance)（zzq 那篇的 reference）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A Quadratic Sieve on the n-Dimensional Cube (Peralta)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Factoring with Two Large Primes (Lenstra, Manasse) &lt;a href=&quot;https://blog.resorie.xyz/posts/mpqs/#fr-1-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;A Block Lanczos Algorithm for Finding Dependencies over GF(2) (Montgomery) &lt;a href=&quot;https://blog.resorie.xyz/posts/mpqs/#fr-2-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</description>
      </item>
      <item>
          <title>模法</title>
          <pubDate>Wed, 23 Jul 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.resorie.xyz/posts/mogic/</link>
          <guid>https://blog.resorie.xyz/posts/mogic/</guid>
          <description xml:base="https://blog.resorie.xyz/posts/mogic/">&lt;p&gt;因为滚去 whk 鸽了两年的 Montgomery 取模。&lt;/p&gt;
&lt;p&gt;众所周知取模很慢，因为一般的除法很慢。但是除一个 $2$ 的幂或者对它取模很快。考虑将对固定模数 $p$ 的取模转化成对一个 $r=2^k$ 的除法和取模操作。要求 $p$ 与 $r$ 互质，具体使用中 $p$ 通常是奇素数，显然满足要求。&lt;/p&gt;
&lt;p&gt;由 $p$ 与 $r$ 互质，$\{xr\mid 0\le x&amp;lt;p\}$ 是一个模 $p$ 的完全剩余系。考虑用 $r(x)=xr\bmod p$ 进行一些操作。&lt;/p&gt;
&lt;p&gt;为了快速计算 $r(x)$，考察一个很邪恶的函数。令 $r^{-1}$ 为模 $p$ 意义下 $r$ 的逆元，定义 $redc(x)=xr^{-1}\bmod p$。redc 是 reduce 的缩写，&lt;del&gt;Montgomery 的论文里这么写的&lt;/del&gt;。先计算 $redc(x)$。把取模用不定方程替代掉：&lt;/p&gt;
&lt;p&gt;$$
r\cdot redc(x) + kp=x
\\
redc(x)=\frac{x-kp}{r}
$$&lt;/p&gt;
&lt;p&gt;然后考察 $k$。由 $r$ 的性质，自然想到对 $r$ 取模：&lt;/p&gt;
&lt;p&gt;$$
kp\equiv x\pmod r
\\ k=xp^{-1} \bmod r
$$&lt;/p&gt;
&lt;p&gt;由于模数固定，$p^{-1}$ 可以预处理。这样算 $redc(x)$ 就可以用两次乘法和一些移位搞定了，很快。注意稍微处理一下，保证 $redc(x)\in[0,p)$。于是 $r(x)$ 也很好算：$r(x)=redc(xr^2)$。可以预处理一下 $r^2\bmod p$。&lt;/p&gt;
&lt;p&gt;接着观测一下 $r(x)$ 的性质。显然 $r(x\pm y)=r(x)\pm r(y)$。对乘法有 $r(xy)=\frac{r(x)r(y)}{r}=redc\left(r(x)r(y)\right)$。所以可以直接用 $r(x)$ 代替 $x$ 进行计算。从 $r(x)$ 还原时有 $x=redc(r(x))$。&lt;/p&gt;
&lt;p&gt;需要预处理 $p^{-1}\bmod r$ 和 $r^2\bmod p$。前者可以对 $f(x)=\dfrac{1}x-p$ 牛迭得到，每次令 $x&#39;=2x-x^2p$ 即可。后者没啥好办法，直接算吧。&lt;/p&gt;
&lt;p&gt;复杂度 $O\left(\dfrac{\log^2p}{w}\right)-O\left(\dfrac{\log^2p}{w^2}\right)$，神速。&lt;/p&gt;
&lt;p&gt;贴一下 &lt;a rel=&quot;external&quot; href=&quot;https://loj.ac/s/316691&quot;&gt;zzt 在 Loj#6466 的实现&lt;/a&gt;并且稍微解释一下：&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;struct&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; u256&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;	u128&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; lo&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; hi&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;	u256&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;	u256&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;u128&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; lo&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; u128&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; hi&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; :&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; lo&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;lo&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; hi&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;hi&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;	static&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; u256&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; mul128&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;u128&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; u128&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; b&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;		u64&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; a_hi&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; a&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 64&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; a_lo&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; u64&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;		u64&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b_hi&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 64&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b_lo&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; u64&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;b&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;		u128&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p01&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; u128&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a_lo&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b_lo&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;		u128&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p12&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; u128&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a_hi&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b_lo&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; u64&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p01&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 64&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;		u64&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; t_hi&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p12&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 64&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; t_lo&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p12&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;		p12&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; u128&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a_lo&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b_hi&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; t_lo&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;		u128&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p23&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; u128&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a_hi&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b_hi&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; u64&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p12&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 64&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; t_hi&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; u256&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;u64&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p01&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt; |&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;p12&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 64&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; p23&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt; ;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;struct&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; Mont&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;	u128&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; mod&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; inv&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; r2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;	Mont&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;u128&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; :&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; mod&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;		assert&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-1&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;		inv&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;		for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 6&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; ++&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; inv&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *=&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; inv&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;		r2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; %&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; n&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;		for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 4&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; ++&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;r2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;gt;=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; mod&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; r2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -=&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; mod&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;		for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 5&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; ++&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;i&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; r2&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; mul&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;r2&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; r2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;	u128&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; reduce&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;u256&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; const&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;		u128&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt; x&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;hi&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span&gt; u256&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;mul128&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-10&quot;&gt;x&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;lo&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; inv&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; mod&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;hi&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; i128&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;y&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; ?&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; mod&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; :&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; y&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;	u128&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; reduce&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;u128&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; const&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; return&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; reduce&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;u256&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;x&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;	u128&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; init&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;u128&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; const&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; return&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; reduce&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-d-10&quot;&gt;u256&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;mul128&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;n&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; r2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;	u128&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; mul&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt;u128&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-9 z-d-10&quot;&gt; u128&lt;/span&gt;&lt;span class=&quot;z-d-9 z-d-i&quot;&gt; b&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; const&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-7&quot;&gt; return&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; reduce&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-d-10&quot;&gt;u256&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt;mul128&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-l-11 z-d-9&quot;&gt; b&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-3&quot;&gt; mont&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-l-6 z-d-8&quot;&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;u256&lt;/code&gt; 是一个压位 &lt;code&gt;u128&lt;/code&gt;，$x=hi\times2^{128}+lo$。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Mont&lt;/code&gt; 是 Montgomery 乘法封装成一个结构体。&lt;code&gt;mod&lt;/code&gt; 是模数 $p$，&lt;code&gt;inv&lt;/code&gt; 是 $p^{-1}\bmod r$，&lt;code&gt;r2&lt;/code&gt; 是 $r^2\bmod p$。但是这个 &lt;code&gt;r2&lt;/code&gt; 的初始化我没看懂。&lt;code&gt;assert&lt;/code&gt; 用来特判偶数，但是这题数据好像没偶数。&lt;/p&gt;
&lt;p&gt;使用时先 &lt;code&gt;mont=Mont(p)&lt;/code&gt;，每个数都先 &lt;code&gt;x=mont.init(x)&lt;/code&gt; 一下。乘法直接 &lt;code&gt;prod=mont.mul(a,b)&lt;/code&gt;。还原的时候 &lt;code&gt;mont.reduce&lt;/code&gt; 一下自己就行。&lt;/p&gt;
</description>
      </item>
    </channel>
</rss>
