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=0\)和\(y=0\)的正方形可以确定为\(4(R-1)+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\)场比赛如果评分在\([L_i,R_i]\),则评分加\(1\)。现有\(Q\)次查询,每次查询给出始分数\(X\),求\(n\)场比赛后的总分。
思路
代码
点击查看代码