安吉D4-B
784 字
4 分钟
安吉D4-B
- 1安吉D19 T1
- 2安吉D19 T3
- 3安吉D20 模考12总结
- 4安吉D17 T3
- 5安吉D17 T4
- 6安吉D19 模考11总结
- 7安吉D15 A
- 8安吉D16 T4
- 9安吉D17 T1
- 10安吉D17 模考10总结
- 11安吉D16 T3
- 12安吉D16 模考9总结
- 13安吉D13 模考8总结
- 14安吉D13-T2
- 15安吉D13-T3
- 16安吉D12-T3
- 17安吉D11-B
- 18安吉D11-C
- 19安吉D11-D
- 20安吉D12 模考7总结
- 21安吉D12-T2
- 22安吉D11-A
- 23安吉D10 模考6总结
- 24安吉D10-T3
- 25安吉D10-T4
- 26安吉D8-E
- 27安吉D9-T4
- 28安吉D8-A
- 29安吉D8-B
- 30安吉D8-C
- 31安吉D8-D
- 32安吉D9 模考5总结
- 33安吉D9-T2
- 34安吉D9-T3
- 35安吉D6-T4
- 36安吉D4-G
- 37安吉D5-T2
- 38安吉D6 模考4总结
- 39安吉D6-T1
- 40安吉D6-T3
- 41安吉-开营测试 T4
- 42安吉D5 模考3总结
- 43安吉D5-T3
- 44安吉D4-A
- 45安吉D4-B本文
- 46安吉D4-C
- 47安吉D4:容斥原理
- 48安吉Day4-D
- 49安吉D3 模考2总结
- 50安吉D3-T1
- 51安吉D3-T2
- 52安吉D3-T4
- 53安吉D2 模考1总结
- 54安吉D2-T2
- 55安吉D1-G
- 56安吉D1-L
- 57安吉D2-T4
原题呈现
题目描述
小 Ω 在小学数学课上学到了“幂次”的概念:,定义 为 个 相乘.
她很好奇有多少正整数可以被表示为上述 的形式?由于所有正整数 总是可以被表示为 的形式,因此她要求上述的表示中,必须有 ,其中 是她事先选取好的一个正整数.
因此她想知道在 到 中,有多少正整数 可以被表示为 的形式,其中 都是正整数,且 ?
输入格式
第一行包含两个正整数 ,意义如上所述.
输出格式
输出一行包含一个非负整数表示对应的答案.
输入输出样例 #1
输入 #1
99 1输出 #1
99输入输出样例 #2
输入 #2
99 3输出 #2
7输入输出样例 #3
输入 #3
99 2输出 #3
12说明/提示
【样例 2 解释】
以下是全部 组符合题意的正整数及对应的一种合法的表示方法.
注意某些正整数可能有多种合法的表示方法,例如 还可以表示为 .
但根据题意,同一个数的不同的合法表示方法只会被计入一次.
【样例 3 解释】
以下是全部 组符合题意的正整数及对应的一种合法的表示方法.
【数据范围】
对于所有数据,保证 ,.
| 测试点编号 | ||
|---|---|---|
| 1 | ||
| 2 | ^ | |
| 3 | ||
| 4 | ^ | |
| 5 | ||
| 6 | ^ | |
| 7 | ||
| 8 | ^ | |
| 9 | ||
| 10 | ^ | |
| 11 | ||
| 12 | ^ | |
| 13 | ||
| 14 | ^ | |
| 15 | ||
| 16 | ^ | |
| 17 | ||
| 18 | ^ | |
| 19 | ^ | ^ |
| 20 | ^ | ^ |
不难得知,使用次方的逆运算 可以快速得知小于 的完全 次方数的数量.那么答案就是
对于 8 来说,它既是完全平方数,也是完全立方数,在 、 和 时都被算了一次,重复算了两次.为了去除这种重复,我们定义 f[i] 表示满足下列条件的正整数数量:
- 小于
- 是完全 次方数
- 不是完全 次方数,
因此,f[i] 的数值就等于满足条件 1 和 2 的正整数数量(即 )减去不满足条件 3 的正整数数量():
上式中的 -1 是因为去除以 1 为底数的数,以 1 为底数,任意自然数为指数都为 1.所以每一次计算 ,1 都会被算 1 遍,在这里减去,最后统一加 1.
最终答案为:.
标程
#include <bits/stdc++.h>using namespace std;typedef long long ll;ll n, k, f[62], ans;int main() { cin >> n >> k;
for (int i = 60; i >= k; i--) { f[i] = powl(n, 1.0 / i) - 1; for (int j = 2; j * i <= 60; j++) { f[i] -= f[j * i]; } } for (int i = k; i <= 60; i++) { ans += f[i]; } cout << ans + 1;}文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!


