CF2041F.Segmentation Folds

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Peter 喜欢折线段玩。有一条线段位于数轴上的区间 [ℓ,r][\ell, r]。现如今正是折叠线段的好时机,Peter 决定小心翼翼地对这条线段进行折叠。每次操作中,他可以选择以下两种方式之一(在可能的情况下):

  1. 操作 LTR\tt{LTR}:他从左向右折线段,使得左端点 ℓ\ell 与某个点 xx 重合(ℓ<x≤r\ell < x \le r),并且 ℓ+x\ell + x 是质数。当他选择此操作时,总是选取最大的 xx 值。折叠后,线段所在的区间变为 [12(ℓ+x),r][\frac{1}{2}(\ell + x), r]。

  2. 操作 RTL\tt{RTL}:他从右向左折线段,使得右端点 rr 与某个点 xx 重合(ℓ≤x<r\ell \le x < r),并且 r+xr + x 是质数。当他选择此操作时,总是选取最小的 xx 值。折叠后,线段所在的区间变为 [ℓ,12(r+x)][\ell, \frac{1}{2}(r + x)]。

一个折叠序列是指这两种操作的组合。Peter 想要通过多次折叠,使线段的长度尽可能短,且无法再缩短。区间的长度自然定义为 r−ℓr - \ell。考虑以下例子:假设我们折叠一段初始为 [1,30][1, 30] 的线段。有三种折叠方式能使最终区间长度最短,如下图所示。

请你帮助 Peter 确定有多少种不同的折叠序列可以使线段达到最短长度。结果需要对 998244353998244353 取模。

注:一个大于 11 的整数 pp 是质数,当且仅当不存在整数 a,b>1a, b > 1 使得 p=abp = ab。

输入格式

第一行包含一个整数 tt,表示测试用例的数量。接下来的 tt 行中,每行包含两个整数 ℓ\ell 和 rr。

  • 1≤t≤101 \le t \le 10
  • 1≤ℓ<r≤10121 \le \ell < r \le 10^{12}
  • r−ℓ≤105r - \ell \le 10^5

输出格式

对于每个测试用例,输出一行,表示能将给定线段折叠到最短长度的折叠序列数量,结果对 998244353998244353 取模。

本翻译由 AI 自动生成

输入输出样例

  • 输入#1

    3
    1 30
    16 18
    142857 240135

    输出#1

    3
    1
    63

输入解题思路,AI测评打分。不知道怎么写?

首页