AtCoder Beginner Contest 389



A - 9x9#

题意#

一位数的乘法

思路#

模拟

代码#

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> pii;

const int mxn = 1e6 + 5;

void solve()
{
	string s;
	cin >> s;
	cout << (s[0] - '0') * (s[2] - '0') << endl;
}

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	int T = 1;
	//cin >> T;
	while (T--)
	{
		solve();
	}

	return 0;
}


B - tcaF#

题意#

给定X,输出n,其中n的阶乘等于X

思路#

数据不大,模拟

代码#

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> pii;

const int mxn = 1e6 + 5;

void solve()
{
	int n;
	cin >> n;
	int t = 1;
	for (int i = 2; ; i++)
	{
		if (t == n)
		{
			cout << i - 1 << endl;
			return;
		}
		t *= i;
	}

}

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	int T = 1;
	//cin >> T;
	while (T--)
	{
		solve();
	}

	return 0;
}


C - Snake Queue#

题意#

最初有一个空的蛇队列,每条蛇有头部坐标与长度两种属性(队头的头部坐标为0,其他的头部坐标为前面所有蛇的长度和)接下来有Q次操作,每次操作有3种:
1.把长为l的蛇加到队尾
2.把队头的蛇出队(保证队列不空),后面的蛇的头部坐标都减少出队蛇的长度
3.输出第k条蛇的头部坐标

思路#

直接模拟会T,用指针来表示队头,用前缀和来维护长度(头部坐标)

代码#

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> pii;

const int mxn = 1e6 + 5;

void solve()
{
	int Q;
	cin >> Q;
	vector<int> v;
	vector<int> pre;
	pre.push_back(0);
	int head = 0, delta = 0;
	while (Q--)
	{
		int a;
		cin >> a;
		if (a == 1)
		{
			int l;
			cin >> l;
			v.push_back(l);
			pre.push_back(pre.back() + l);
		}
		else if (a == 2)
		{
			delta += v[head];
			head++;
		}
		else
		{
			int k;
			cin >> k;
			cout << pre[head + k - 1] - delta << endl;
		}
	}

}

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	int T = 1;
	//cin >> T;
	while (T--)
	{
		solve();
	}

	return 0;
}


D - Squares in Circle#

题意#

二维坐标上有无数1×1的正方形平铺。求以一正方形中心为圆心,R为半径作圆,能包含多少完整的正方形

思路#

(0.5,0.5)为圆心,对于x=0y=0的正方形可以确定为4(R1)+1,接下来只需要枚举下图所示的x,同时计算最大y向下取整,累加即是答案

代码#

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> pii;

const int mxn = 3e5 + 5;

void solve()
{
	int R;
	cin >> R;
	int ans = 4 * (R - 1) + 1;
	for (int i = 1; i * 1.0 + 0.5 <= R * 1.0; i++)
	{
		double x = i * 1.0 + 0.5;
		double y = sqrt(R * R - x * x) - 0.5;
		ans += 4 * (int)y;
	}
	cout << ans << endl;
}

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	int T = 1;
	//cin >> T;
	while (T--)
	{
		solve();
	}

	return 0;
}


E -#

题意#

思路#

代码#

点击查看代码


F - Rated Range#

题意#

总共n场比赛,第i场比赛如果评分在[Li,Ri],则评分加1。现有Q次查询,每次查询给出始分数X,求n场比赛后的总分。

思路#

代码#

点击查看代码



比赛链接 https://atcoder.jp/contests/abc389

posted @   _SeiI  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示