luogu#P8574. 「DTOI-2」星之影

「DTOI-2」星之影

题目背景

闻是白极影,见时方立竿。

题目描述

白极影化为立竿之人莅临人间,带来了星之函数 f(x)f(x),它的值为最接近于 x4\sqrt[4]x 的整数\\(即 f(x)=x4+12f(x)=\left\lfloor\sqrt[4]x+\dfrac12\right\rflooru\lfloor u\rfloor 为对 uu 向下取整后的值)。

现有 tt 个数字 nn,对于每个 nn,立竿人想知道 i=1n1f(i)\sum\limits_{i=1}^n\dfrac1{f(i)} 的值是多少,请你告诉它吧。


因为立竿人很急,所以本题的 tt 组询问强制在线,后一个询问需通过前一个询问的答案生成。

可用以下 C++ 代码生成(其他语言同理;需包含 <stdio.h>):

typedef long long ll;
char buf_ans[114];
ll next_n(double last_ans=0,ll get_n=0){
	//last_ans<n<=1e18
	sprintf(buf_ans,"%.6f",last_ans);
	for(ll i=0,x=0;;i++){
		if(buf_ans[i]=='.')return get_n^x;
		if(i&1)x*=10;
		else x=x*10+(buf_ans[i]^48);
	}
}

该函数第一个参数为上一次询问的答案(第一次询问时该值为 00,也就是说第一个数未经加密),第二个参数为这一次读入的被加密的数,函数返回解密后的 nn

输入格式

第一行一个整数 tt,表示数据组数(询问次数)。

对于每组数据,仅一行一个整数表示加密后的 nn(第一个 nn 未被加密)。

输出格式

每行输出一个六位小数,表示答案。

7
1
5
12
95
2040
1145141920209
1070909051
1.000000
4.000000
6.500000
38.666667
403.857143
1475989956.412959
1.000000

提示

样例解释

样例#1 解密后各组询问分别是:

$$\def{\r}{\cr\hline} \def\arraystretch{1.5}\begin{array}{|c|c|c|c|c|c|c|c|}\hline \textbf{t}&1&2&3&4&5&6&7\r \textbf{n}&1&4&8&89&2022&1145141919810&1\r \end{array} $$

数据范围

本题采用捆绑测试。

$$\def\arraystretch{1.5}\begin{array}{|c|c|c|c|}\hline \textbf{Subtask} & t= & n\le&\bm{\textbf{Score}} \cr\hline 1 & 10&10^6 & 2 \cr\hline 2&1000&10^6&13\cr\hline 3&100&10^9&15\cr\hline 4 &1000&10^{18}&40\cr\hline 5 &%\text{No Special Constraints} 5\times10^5&10^{18}& 30 \cr\hline \end{array} $$

对于 100%100\% 的数据,10t5×10510 \le t \le 5\times10^51n10181 \le n \le 10^{18}

计分规则

本题采用 Special Judge\textbf{Special Judge},令你输出的答案为 pans\text{pans},标答答案为 jans\text{jans},如果 $\vert \text{pans}-\text{jans}\vert<\text{jans}\times10^{-5}$ 那么该组数据通过,在一个测试点内只有所有 tt 组数据通过该测试点才算通过。

注意后一个 Subtask\text{Subtask} 对前一个 Subtask\text{Subtask} 有依赖关系,即如果你没有在前一个 Subtask\text{Subtask} 拿到分,那么你即使通过后一个 Subtask\text{Subtask} 的所有测试点,你也无法拿到后面的分数。