A:
题目链接
判断一下
400
m
o
d
a
400\bmod a
400moda就行了
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
int a;
cin >> a;
cout << (400 % a != 0 ? -1 : 400 / a) << '\n';
return 0;
}
B:
题目链接
因为
M
M
M很小,所以暴力就行了
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
int n, m;
cin >> n >> m;
bool t = true;
int sum = 0;
for (int i = 0; i <= m; i++) {
int res = 1;
for (int j = 1; j <= i; j++) res = res * n;
sum += res;
if (sum > 1e9) {
t = false;
break;
}
}
if (!t) puts("inf");
else cout << sum << '\n';
return 0;
}
C:
题目链接
j
i
a
n
g
l
y
jiangly
jiangly大佬的做法:
看
a
a
a的奇偶性
-
a
a
a是奇数,
a
=
1
a=1
a=1时
2
a
×
b
2
2^a \times b^2
2a×b2就是
2
×
b
2
2 \times b^2
2×b2。
a
=
3
a=3
a=3时
2
a
×
b
2
2^a \times b^2
2a×b2就是
2
×
(
2
b
)
2
2 \times (2b)^2
2×(2b)2。
a
=
5
a=5
a=5时是
2
×
(
4
b
)
2
…
2 \times (4b)^2\dots
2×(4b)2…
它们的形式都是 2 × k 2 2\times k^2 2×k2,因为 b b b可以是任意正整数,因此所有这个形式的都是好数,即好数 X = 2 × k 2 X=2\times k^2 X=2×k2, X ≤ N X\leq N X≤N,那么 k k k可以是哪些数字呢,就是 k ≤ n / 2 k\leq \sqrt{n/2} k≤n/2,共 n / 2 \sqrt{n/2} n/2个数 -
a
a
a是偶数,
a
=
2
a=2
a=2时
2
a
×
b
2
2^a \times b^2
2a×b2就是
4
×
b
2
4 \times b^2
4×b2。
a
=
4
a=4
a=4时
2
a
×
b
2
2^a \times b^2
2a×b2就是
4
×
(
2
b
)
2
4 \times (2b)^2
4×(2b)2。
a
=
6
a=6
a=6时是
4
×
(
4
b
)
2
…
4 \times (4b)^2\dots
4×(4b)2…
它们的形式都是 4 × k 2 4\times k^2 4×k2,因为 b b b可以是任意正整数,因此所有这个形式的都是好数,即好数 X = 4 × k 2 X=4\times k^2 X=4×k2, X ≤ N X\leq N X≤N,那么 k k k可以是哪些数字呢,就是 k ≤ n / 4 k\leq \sqrt{n/4} k≤n/4,共 n / 4 \sqrt{n/4} n/4个数
最终答案就是
n
/
2
+
n
/
4
\sqrt{n/2}+\sqrt{n/4}
n/2+n/4
那么有人现在就问了,嘿!你怎么知道
a
a
a是奇数的时候和
a
a
a是偶数的时候好数不会重复呢?
答:问这话就相当于想要证明不存在两个正整数
k
1
k_1
k1和
k
2
k_2
k2使得
2
×
k
1
2
=
4
×
k
2
2
2\times k_1^2=4\times k_2^2
2×k12=4×k22移项得:
(
k
1
k
2
)
2
=
2
(\frac{k1}{k2})^2=2
(k2k1)2=2同时根号一下即
k
1
k
2
=
2
\frac{k1}{k2}=\sqrt{2}
k2k1=2,发现
2
\sqrt{2}
2是无理数,不能写成
q
p
\frac{q}{p}
pq的形式,所以
2
×
k
1
2
≠
4
×
k
2
2
2\times k_1^2\neq 4\times k_2^2
2×k12=4×k22
注意!写代码时要用
s
q
r
t
l
sqrtl
sqrtl
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
int n;
cin >> n;
cout << (int)((int)sqrtl(n / 2) + (int)sqrtl(n / 4)) << '\n';
return 0;
}
1238

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



