EASTVIII 算术教室

2015.01.31 16:18 Sat| 6 visits oi_2015| 2015_刷题日常| Text

Problem

Description

“琪露诺,你来回答一下这个问题。”

“我知道我知道!答案是⑨!”

“……那么下一个问题。”

“我知道我知道!答案是⑨!”

“……”

于是慧音老师不耐烦地对琪露诺发动了符卡·必杀『Knock-Out 头槌』= =

放学后,慧音老师布置了当天的数学作业——十道数学题。

已知琪露诺的运算法则是这样的: 定义琪露诺的算数法则为一个集合 S={1,2,⑨}和定义在这个集合上的运算符“+”。

“+”的运算法则为:若 a,b∈S,则 a+b=⑨。

由此可以得出琪露诺加法的一些性质,例如:

  • 交换律:a+b=b+a=⑨
  • 结合律:a+(b+c)=(a+b)+c=⑨

然而虽然琪露诺的运算法则十分强大,但是对于慧音老师的作业显然无能为力。因此她找到了你,希望你能帮她解决这些简单的数学题。

Problem 1

求 $\pi + e$ 的值。

Problem 2

求 $\ln 2$ 的值。

Problem 3

求方程 $\cos x = x$ 的唯一实数解。

Problem 4

将 $10 ^ {18}$ 分解成若干正实数的乘积,求这些正实数之和的最小值。

Problem 5

求 $\sum \limits _{i=1} ^{+\infty} {1 \over i^2}$ 的值。

Problem 6

求方程 $x ^{1\over5} + y ^{1\over5} = 10 ^{1\over5}$ 在第一象限的图形与坐标轴围成的图形的面积。

Problem 7

求函数 $y = \cos^9x(x \in [0, {\pi\over 2}])$ 的图像与两坐标轴围成的面积。

Problem 8

动点 $P$ 从 $(0,10)$ 运动到 $(0,0)$,动点 $Q$ 从 $(0,0)$ 运动到 $(10,0)$,期间时刻保证 $PQ = 10$,令线段 $PQ$ 扫过区域的上界为 $f(x)(x \in [0, 10])$,求 $f(7)$。

Problem 9

求抛物线 $y = 5x^2$ 在 $[0,10]$ 部分的长度。

Problem 10

求椭圆 $({x\over4})^2 + ({y\over3})^2 = 1$ 的周长。

琪露诺认为这些问题对于像你这样的天才来说实在是太简单了,因此请你认真作答,不要辜负她的期望哦~~

Output

对于给定的十个子问题 Problem1 ~ Problem10,你需要分别提交你的输出文件 class1.out ~ class10.out。 每个文件内包含一个 $(0, 10^{18})$ 范围内的实数,代表对应子问题的答案。

慧音老师是一位十分严格的老师,她希望你的答案越精确越好,因此在保证答案靠谱的情况下,请使用 long double 类型进行浮点型的存储和运算,并在输出文件中输出 20 位左右的小数。

Scoring Rules

对于每组数据,我们的评分规则如下:

首先你需要保证你的输出文件中包括一个数字。如果你输出了一坨乱七八 糟的东西,该测试点将会得到零分。对于每个测试点,保证答案是一个 $(0, 10^{18})$ 范围内的实数。如果你输出了一个小于等于 0 的数或是一个过于巨大的数字,该测试点将会得到零分。

在保证上面两点的前提下,我们定义相对误差 $\Delta = {your_ans - std_ans\over std_ans}$。

如果,$\Delta = 0$ 该测试点将会得到满分。 否则,令 $Score = -\lg\Delta$,你的分数将会由下表给出:

也就是说,如果你的答案和标准答案的相对误差不超过 $10^{-9}$,你将会得到该测试点的全部分数;

如果你的答案和标准答案相差超过10%,你在该测试点将会只得到 1 分。

How to check your ans

我们提供 checker.exe 这个工具来测试你的输出文件是否是可接受的。使用这个工具的方法是:

将你要测试的测试点输出与 checker.exe 放在同一目录下。 双击运行 checker.exe,输入测试点编号,将会测试你的输出是否是可接受的。

在你调用这个程序后,checker.exe 将根据你给出的输出文件给出测试的结果。

请不要试图对 checker.exe 进行反编译,或者利用 checker.exe 作为 Check() 函数进行三分/枚举答案。我们会使用古明地觉的读心术来验证你是否进行了上述的作弊行为。

请不要使用搜索引擎及类似算法。

After Story

上白泽·慧音:啊拉~刚刚好像一不小心把不得了的作业发给琪露诺了~

算了,反正那家伙也做不出来~~估计还会觉得这些题很简单吧~ 不知道她又把作业拿给哪个倒霉蛋做了呢?

Solution

注意到这些问题都是那么的丧心病狂,并且按照精度给分。

由于读心术的存在,我们要找到一种方法使得在不作弊的情况下巧妙利用 checker。

可以发现若保留 n 位有效数字,总会有 0 到 2 个数使得得分较高。这样若选择了一个初始值(得分超过 2 分),就可以对于每一位依次确定。

于是只需要找到一个初值,然后随便调整一下精度就好了。很多事情都可以用 Python 完成。

首先写一个简单的批处理:

@echo off
:loop
checker.exe < readme.txt
sleep.py
goto loop

然后写一个简单的 readme.txt:

1 输出 20 位小数还真是难搞啊 QoQ
只好就是这样了……
God Bless 出题人……
PoPoQQQ 大爷辛苦了……

        signed: eolv
        2015/01/31 @10:14

当然还有一个心血来潮的卡时间用的 sleep.py

ans = 0
for i in range(1, 5000000):
    ans = ans + 1

之后运行 bat,实时显示答案 233。

当然,要求输出 20 位,所以在确定前 9 位之后填个 0 再补齐 20 位,完美解决!!

为因为没背下来 $\pi$ 和 $e$ 而未在第一个测试点得到满分的小朋友默哀……