AtCoder Beginner Contest 400

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 XN,那么 k k k可以是哪些数字呢,就是 k ≤ n / 2 k\leq \sqrt{n/2} kn/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 XN,那么 k k k可以是哪些数字呢,就是 k ≤ n / 4 k\leq \sqrt{n/4} kn/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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值