第一题
题目链接
0贪吃蛇长度 - 蓝桥云课
题目解析
题意:数#个数和@个数再加上首尾
代码原理
略
代码编写
略
填空题技巧
眼看手数
当然并不是真的一个一个数,我们需要借助一些工具,不过各位小伙伴们放心,我们借助的工具一定是比赛时能用的工具
cv技术想必大家都会的,哎,也许真的会有小伙伴不知道cv技术,那么博主在这里也给大家简单讲一下这个cv技术,cv技术即ctrl + c 、ctrl + v。
先将图片中的代码cv到devc++中
在这一栏找到搜索
用字母去替换#和@,这里建议分开数哈,一边换,一边数,数完一个100就找个地方记一下数
第二题
题目解析
解题技巧
excel技巧
选择单元格格式,选择日期
答案就是取整即可
第三题
题目链接
题目解析
代码原理
略
代码编写
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll check(ll m)
{
ll max_ans = -0x3f3f3f3f;
while(m != 1)
{
m = m % 2? m * 3 + 1 :m / 2;
if(m > max_ans) max_ans = m;
}
return max_ans;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll n = 0;
cin >> n;
ll max_val = -0x3f3f3f3f;
for(ll i = 1; i <= n; i++)
{
ll t = check(i);
if(max_val < t) max_val = t;
}
cout <<max_val;
return 0;
}
第四题
题目链接
0工作时长 - 蓝桥云课
题目解析
代码原理
略
代码编写
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct Date
{
int month,day;
int h,m,n;
}d[530];
bool Compare(Date a, Date b)
{
if(a.month != b.month) return a.month < b.month;
else if(a.day != b.day) return a.day < b.day;
else if(a.h != b.h) return a.h < b.h;
else if(a.m != b.m) return a.m <b.m;
else return a.n < b.n;
}
int main()
{
string s;
for(int i = 1; i <= 520; i++)
{
getline(cin,s);
sscanf(s.c_str(), "2022-%d-%d %d:%d:%d",&d[i].month,&d[i].day,&d[i].h,&d[i].m,&d[i].n);
}
sort(d + 1, d + 1 + 520, Compare);
ll ans = 0;
for(int i = 1; i <= 520 && i + 1 <= 520; i += 2)
{
ll stime = d[i].day * 24 * 60 * 60 + d[i].h * 60 * 60 + d[i].m * 60 + d[i].n;
ll etime = d[i + 1].day * 24 * 60 * 60 + d[i + 1].h * 60 * 60 + d[i + 1].m * 60 + d[i + 1].n;
ans += etime - stime;
}
cout << ans << endl;
return 0;
}
这个代码呢是无法通过的,但是这个代码出来的结果是答案
结果图
思路梳理
先将这些数据导入进来,再用sort容器进行排序,最后再转化成秒然后每次进行一次相减得到时间戳,最后再相加
本题总结
1.sort模板:sort(起始位置,终点位置,函数名);
2. getline(cin,s);
sscanf(s.c_str(), "%d-%d-%d %d:%d:%d",&d[i].year,&d[i].month,&d[i].day,&d[i].h,&d[i].m,&d[i].n);
当然啦,这题也可以用excel的方法解题,如果小伙伴们不太熟悉excel的可以试着学一下这个方法
第五题
题目链接
0互质数的个数 - 蓝桥云课
题目解析
代码原理
这里没啥好讲的,但是有个模板还是建议大家记一下,毕竟这次蓝桥模拟中也是出现了
ll judge(ll x, ll g)
{
while(g != 0)
{
ll tmp = g;
g = x % g;
x = tmp;
}
return x == 1;
}
作用是判断两数是否为互质
代码编写
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 998244353;
ll judge(ll x, ll g)
{
while(g != 0)
{
ll tmp = g;
g = x % g;
x = tmp;
}
return x == 1;
}
bool check(ll x, ll g)
{
return judge(x, g);
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll a = 0, b = 0;
cin >> a >> b;
ll pow_a_b = pow(a, b);
ll cnt = 0;
for(int x = 1; x < pow_a_b; x++)
{
if(check(x, pow_a_b))
{
cnt++;
if(cnt >= N)
{
cnt %= N;
}
}
}
cout << cnt;
}
注意哈,这段代码是暴力破解,有超时的风险
本篇文章的内容就先到这,我们下期文章再见!