首先,这是道蓝题
P8883 幻想中成为原神
题目背景
钟离很喜欢数学题。
其中一个问题是这样的:定义一个丘丘人是可以被击杀的,当且仅当存在一个大于 111 的完全平方数能够整除它的编号。比如,121212 号丘丘人就是可以被击杀的,因为它能够被 444 整除;151515 号丘丘人则不能被击杀。请计算编号为 1∼n1\sim n1∼n 中的丘丘人中能够被击杀的个数。由于钟离秉承着“差不多得了”的做事理念,因此,他允许你的答案与真正的答案有着不超过 2×1042\times10^42×104 的绝对误差。
输入格式
本题多组询问。第一行输入一个数 TTT,表示询问组数。
每组询问输入一行,一个正整数 nnn。
输出格式
对于每组询问,输出一行一个整数,表示编号为 1∼n1\sim n1∼n 中的丘丘人中能够被击杀的个数。
样例 #1
样例输入 #1
3
10
32678
9686985
样例输出 #1
3
12814
3797988
提示
样例解释
1∼101\sim 101∼10 中,只有 4,8,94,8,94,8,9 这 333 个丘丘人可以被击杀,因此答案为 333。
需要注意的是,由于你的答案被允许与标准答案有 2×1042\times 10^42×104 的绝对误差,因此 −2,3,20003-2,3,20003−2,3,20003 等输出都将被认为是正确的。
数据范围
- Subtask 1(10 pts)\text{Subtask 1(10 pts)}Subtask 1(10 pts):n≤105n\le 10^5n≤105。
- Subtask 2(20 pts)\text{Subtask 2(20 pts)}Subtask 2(20 pts):n≤107n\le 10^7n≤107。
- Subtask 3(20 pts)\text{Subtask 3(20 pts)}Subtask 3(20 pts):n≤109n\le 10^9n≤109。
- Subtask 4(20 pts)\text{Subtask 4(20 pts)}Subtask 4(20 pts):T=1T=1T=1。
- Subtask 5(30 pts)\text{Subtask 5(30 pts)}Subtask 5(30 pts):无特殊性质。
对于 100%100\%100% 数据,满足 1≤n≤10181\le n\le 10^{18}1≤n≤1018,1≤T≤1041\le T\le 10^41≤T≤104,保证 nnn 在范围内随机得到。
———————————————————————
关于原神的内容请自动忽略
打表!!
打了一坤年后,输入与答案的比值出来了…
6÷π2≈6\div\pi^2\approx6÷π2≈ 0.39207289814597337133672322074163
≈\approx≈
0.39207289814597
完结撒花
红题的码量
橙题的打表
蓝题的经验
#include<bits/stdc++.h>
#define ac 0.39207289814597
using namespace std;
int main()
{
int t;
double n;
scanf("%d",&t);
while(t--)
{
cin>>n;
n*=ac;
printf("%lld\n",(long long)n);
}
return 0;
}

471

被折叠的 条评论
为什么被折叠?



