#birthday0410f. [birthday0410_f]おいらの素数生成式

[birthday0410_f]おいらの素数生成式

问题文

素数列的研究自古以来就是许多人努力并且挫折的事情,因而出了名。我也是其中之一。我现在陷入了困境。

前几天,我吹嘘自己发现了只包含素数的数列的通项(生成式),但仔细想一想其实根本不是那么回事,等我意识到的时候已经晚了,结果不得不在公开场合发表了!

说实话,我满脑子想着要找个地缝钻进去,但必须忍耐才能有未来。所以,我考虑了下面的策略!

  1. 由于素数列在商业上非常有价值,所以不能立即公开其生成式。
  2. 公开该数列的第1项到第100项。
  3. 立刻唱一首与素数有关的奇怪歌曲,转移话题,不要提问。

嗯!这样一来,一定能使大家满意,我的地位也会更上一层楼。


任务

求一个一元函数f(n)f(n),使得f(1)f(1)f(2)f(2),...,f(100)f(100)这100个值尽可能多地成为不同的素数。

但是,由于计算ff的计算机只能进行32位带符号整数类型的运算,所以ff必须满足以下约束条件。

  • 该表达式只由变量nn、常数、加减乘除(+,-,*,/)和求余(%),一元的 + 和 - 组成。
  • 常数必须能够适应32位带符号整数,并且对于n=1n = 122,...,100100在计算f(n)f(n)时出现的所有值也必须能够适应32位带符号整数。
    注意:-5不是常数,而是将常数5应用于一元运算符-的形式。因此,常数都必须是非负的,并且它们的值都必须小于等于2147483647。即-2147483648是一个无效的表达式。
  • 表达式的计算顺序从左到右进行,一元运算符具有最高优先级,乘除和取余次之,加减最后,如果存在括号,则优先级更高。
  • 除法是整数除法。整数除法得到的值是代数商去掉小数部分的值(例如,-7/3 = -2)。
  • 对于取余,使(x / y) * y + x % y的值等于x的值(例如-7%3 = -1)。
  • 不能发生除以零的情况。
  • 输出的表达式必须由以下BNF表示中的 符号推导出,不得包含额外的空格等。

<expr> ::= <term> "+" <expr>
         | <term> "-" <expr>

<term> ::= <fact> "*" <term>
         | <fact> "/" <term>
         | <fact> "%" <term>

<fact> ::= "+" <fact>
         | "-" <fact>
         | "(" <expr> ")"
         | <number>
         | "n"

<number> ::= <digit>
           | <digit> <number>

<digit> ::= "0" | "1" | "2" | "3" | "4"
          | "5" | "6" | "7" | "8" | "9"

输入

本问题没有输入。

输出

输出满足任务约束条件的f(n)f(n)的表达式。


评分标准

计算 f(1)f(1)f(2)f(2),...,f(100)f(100)并根据包含的不同素数数量(记为PP)以及该表达式的长度(记为LL)给出得分。但是,当表达式 ff 不满足任务的约束条件或者 L>2000L > 2000时得分为0。否则,每次满足以下条件会给出相应的得分:

  • Pgeq87P \\geq 874分
  • P=100P = 100 and Lleq600L \\leq 6005分
  • P=100P = 100 and Lleq300L \\leq 3005分
  • P=100P = 100 and Lleq250L \\leq 2506分
  • P=100P = 100 and LleqAL \\leq A15分
  • P=100P = 100 and LleqBL \\leq B15分
  • P=100P = 100 and LleqCL \\leq C20分
  • P=100P = 100 and LleqDL \\leq D230分
  • P=100P = 100 and LleqXL \\leq X1点赞
  • P=100P = 100 and L<XL < X1点荣誉
    这里,XX 是 JAPLJ 和 kyuridenamida 提供的解中最短的一个的长度,AABBCCDD 是秘密常数,满足以下方程:
    • X<D<C<B<A<250X < D < C < B < A < 250
    • 250AgeqAB=BC>CD>DX250 - A \\geq A - B = B - C > C - D > D - X

**注意:**在本问题中,我们将“满足任务约束条件并且 Lleq2000L \\leq 2000 的输出”称为“Accepted”。因此,即使提交了AC的结果,也可能得到不满分。换句话说,如果返回以下结果,则可能意味着:

  • 如果提交结果为WA,则表达式 ff 违反了任务的约束条件,或者 L>2000L > 2000