蓝桥杯模拟赛练习

第8场小白赛:

二进制王国:

  • 主要是自定义排序,这个cmp的写法要熟悉,用到的地方还是有的。

  • int cmp(const string &s1, const string &s2){
    return s1 + s2 < s2 + s1;
    }

  • 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 10;
int n;
string s[N];
int cmp(const string &s1, const string &s2){
return s1 + s2 < s2 + s1;
}
signed main()
{
cin>>n;
for(int i = 0; i < n; i++){
cin>>s[i];
}
sort(s, s + n, cmp);
for(int i = 0; i < n; i++){
cout<<s[i];
}

return 0;
}

djwcb:

  • 找规律题目,0-9的幂的个位数存在循环的规律,那么问题就变为一个超大的数p%一个个位数,可以从左开始逐位mod,结果乘10累计到下一位。很不错的一道思维题。
  • 代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[] = {1,1,4,4,2,1,1,4,4,2};
int t,n;
string p;
void solve(){
cin>>n>>p;
n = n % 10;
int m = a[n];
int tmp = 0;
for(int i = 0; i < p.size(); i++){
tmp = (tmp*10 + p[i]-'0') % m;
}
if(m == 1){
cout<<n<<endl;
}else{
if(tmp == 0) tmp = a[n];
cout<<(int)pow(n, tmp)%10<<endl;
}
}
signed main()
{
cin>>t;
while(t--){
solve();
}
return 0;
}

蓝桥杯模拟赛练习
http://example.com/2024/03/31/蓝桥杯省赛备赛/蓝桥杯模拟赛练习/
作者
jhxxxxx
发布于
2024年3月31日
许可协议