洛谷水题赏析第二弹

首先,这是道蓝题

P8883 幻想中成为原神

题目背景

钟离很喜欢数学题。

其中一个问题是这样的:定义一个丘丘人是可以被击杀的,当且仅当存在一个大于 1 1 1 的完全平方数能够整除它的编号。比如, 12 12 12 号丘丘人就是可以被击杀的,因为它能够被 4 4 4 整除; 15 15 15 号丘丘人则不能被击杀。请计算编号为 1 ∼ n 1\sim n 1n 中的丘丘人中能够被击杀的个数。由于钟离秉承着“差不多得了”的做事理念,因此,他允许你的答案与真正的答案有着不超过 2 × 1 0 4 2\times10^4 2×104 的绝对误差。

输入格式

本题多组询问。第一行输入一个数 T T T,表示询问组数。

每组询问输入一行,一个正整数 n n n

输出格式

对于每组询问,输出一行一个整数,表示编号为 1 ∼ n 1\sim n 1n 中的丘丘人中能够被击杀的个数。

样例 #1

样例输入 #1

3
10
32678
9686985

样例输出 #1

3
12814
3797988

提示

样例解释

1 ∼ 10 1\sim 10 110 中,只有 4 , 8 , 9 4,8,9 4,8,9 3 3 3 个丘丘人可以被击杀,因此答案为 3 3 3

需要注意的是,由于你的答案被允许与标准答案有 2 × 1 0 4 2\times 10^4 2×104 的绝对误差,因此 − 2 , 3 , 20003 -2,3,20003 2,3,20003 等输出都将被认为是正确的。

数据范围
  • Subtask 1(10 pts) \text{Subtask 1(10 pts)} Subtask 1(10 pts) n ≤ 1 0 5 n\le 10^5 n105
  • Subtask 2(20 pts) \text{Subtask 2(20 pts)} Subtask 2(20 pts) n ≤ 1 0 7 n\le 10^7 n107
  • Subtask 3(20 pts) \text{Subtask 3(20 pts)} Subtask 3(20 pts) n ≤ 1 0 9 n\le 10^9 n109
  • Subtask 4(20 pts) \text{Subtask 4(20 pts)} Subtask 4(20 pts) T = 1 T=1 T=1
  • Subtask 5(30 pts) \text{Subtask 5(30 pts)} Subtask 5(30 pts):无特殊性质。

对于 100 % 100\% 100% 数据,满足 1 ≤ n ≤ 1 0 18 1\le n\le 10^{18} 1n1018 1 ≤ T ≤ 1 0 4 1\le T\le 10^4 1T104,保证 n n n 在范围内随机得到。

———————————————————————
关于原神的内容请自动忽略

打表!!
打了一坤年后,输入与答案的比值出来了…

6 ÷ π 2 ≈ 6\div\pi^2\approx 6÷π2 0.39207289814597337133672322074163
≈ \approx
0.39207289814597

完结撒花

红题的码量
橙题的打表
蓝题的经验

#include
#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;
}

洛谷水题赏析第二弹_第1张图片

你可能感兴趣的:(算法)