2022 第十三届蓝桥杯大赛软件赛省赛(第二场),C/C++ 大学B组题解
文章目录
补题链接:地址


#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
cout<<"ABC";
return 0;
}

题意:求第一个大于某2e8的数的回文数,且满足他可以等于1+2+…某个k。
一种是从2e8开始往上枚举,判断每个数是不是回文+三角,三角可以根号再乘附近的几个数特判一下。
另一种是枚举三角,1+2+…k,判断是不是回文和大于2e8,+k加到后面就是指数级了,上升也很快。
答案:35133153
#include<bits/stdc++.h>
using namespace std;
int main(){
int x = 0;
for(int i = 1; ; i++){
x += i;
if(x <= 20220514)continue;
string s = to_string(x);
string t = s;
reverse(t.begin(),t.end());
if(s==t)break;
}
cout<<x<<"\n";
return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main(){
int n; cin>>n;
int i, x = 0;
for(i = 1; ; i++){
x += i;
if(x < n)continue;
break;
}
cout<<i<<"\n";
return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main(){
int n; cin>>n;
set<int>se;
for(int i = 1; i <= n; i++){
string t; int id; cin>>t>>id;
se.insert(id);
}
for(auto x : se){
cout<<x<<"\n";
}
return 0;
}


#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int a[maxn], f[maxn];
int isprime(int x){ //判断素数
for(int i = 2; i*i <= x; i++){
if(x%i==0)return 0;
}
return 1;
}
int find(int x){//找最小质因数
if(x==0 || x==1)return x;
for(int i = 2; i*i <= x; i++){
if(x%i==0 && isprime(i))return i;
}
}
int main(){
int n; cin>>n;
for(int i = 1; i <= n; i++)cin>>a[i];
memset(f, 0xc0, sizeof(f));
f[1] = a[1];
for(int i = 1; i <= n; i++){
int x = i+find(n-i); //最小质因数
for(int j = i+1; j <= x; j++){
f[j] = max(f[j], f[i]+a[j]);
}
}
cout<<f[n]<<"\n";
return 0;
}


#include<bits/stdc++.h>
using namespace std;
const int maxn = 510;
int a[maxn][maxn], vis[maxn][maxn];
struct node{int x, y, time;}; //完成变色的时间
bool operator < (node a, node b){ return a.time > b.time; }
priority_queue<node, vector<node>, less<node> >q;
int dx[] = { 0,0,1,-1 };
int dy[] = { 1,-1,0,0 };
int main(){
int n, m; cin>>n>>m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cin>>a[i][j];
}
}
int res = 0;
q.push((node){1, 1, a[1][1]});
vis[0][0] = 1;
while(q.size()){
node t = q.top(); q.pop();
res = max(res, t.time);
for(int i = 0; i < 4; i++){
int nx = t.x+dx[i], ny = t.y+dy[i];
if(nx>=1&&nx<=n && ny>=1&&ny<=m && vis[nx][ny]==0){//没染过色
vis[nx][ny] = 1;
q.push((node){nx,ny, t.time+a[nx][ny]});
}
}
}
cout<<res<<"\n";
return 0;
}


#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
map<int,vector<LL>>mp; //mp[x]: 维护余数为x的前缀和有哪些
LL s[4]; //前缀和, 滚动数组
int main(){
int n, k; cin>>n>>k;
LL ans = 0;
mp[0].push_back(0); //别忘了
for(int i = 1; i <= n; i++){
int x; cin>>x;
s[i%2] = s[(i-1+2)%2]+x;
int r = (s[i%2]%k+k)%k; //%k余数
int len = mp[r].size();
for(int j = 0; j < len; j++){
if(mp[r][j] <= s[i%2])ans++;
}
// sort(mp[r].begin(), mp[r].end());
// ans += upper_bound(mp[r].begin(), mp[r].end(), s[i%2])-mp[r].begin();
mp[r].push_back(s[i%2]);
}
cout<<ans<<"\n";
return 0;
}




//分块可以AC 20个点的块长, sqrt(n)*5
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n; cin>>n;
vector<int> a(n+1,0);
//分块
int len = sqrt(n)*5; //块长
int k = (n%len==0)?n/len:n/len+1;//块数
vector<int> block[k+1]; //本体
vector<int> belong(n+1,0);
int blockNum = 0;
for(int i=1;i<=n;i++){ //分块
cin>>a[i];
blockNum=(i-1)/len+1;
belong[i]=blockNum;
block[blockNum].push_back(a[i]);
}
for(int i=1;i<=k;i++){ //块排序
sort(block[i].begin(),block[i].end(),less<int>());
}
//输入操作
int m; cin>>m;
vector<vector<int>> op(m,vector<int>(4,0));
for(int i=0;i<m;i++){
cin>>op[i][0];
cin>>op[i][1]>>op[i][2];
if(op[i][0]==2)cin>>op[i][3];
}
//执行
vector<int> res;
for(int i = 0; i < m; i++){
int num1=op[i][1], num2=op[i][2], num3=op[i][3];
if(op[i][0]==1){ //修改
auto it=lower_bound(block[belong[num1]].begin(),block[belong[num1]].end(),a[num1]);
block[belong[num1]].erase(it);
it=lower_bound(block[belong[num1]].begin(),block[belong[num1]].end(),num2);
if(it==block[belong[num1]].end())block[belong[num1]].push_back(num2);
else block[belong[num1]].insert(it,num2);
a[num1] = num2;
}else{ //查询
int count = 0, mid = a[num3];
//先查左右两端分块中满足条件的元组数,因为num1和num2所在的块不一定一整块都参与比较
for(int j=num1;j<=min(num2,belong[num1]*len);j++){
if(a[j]<mid)count++;
}
if(belong[num1]!=belong[num2]){
for(int j=(belong[num2]-1)*len+1;j<=num2;j++){
if(a[j]<mid)count++;
}
}
//区间查询,用二分法查询每个块中小于a[p]的元素个数
for(int j=belong[num1]+1;j<=belong[num2]-1;j++){
count+=lower_bound(block[j].begin(),block[j].end(),a[num3])-block[j].begin();
}
res.push_back(count+1);
}
}
for(auto &&num:res)cout<<num<<" ";
return 0;
}


#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod = 1e9+7;
LL pows(LL a, LL x, LL p){if(x==0)return 1; LL t = pows(a, x>>1,p);if(x%2==0)return t*t%p;return t*t%p*a%p;}
int main(){
int n, m; cin>>n>>m;
int nn = sqrt(2*m)+2;
while(nn*(nn+1)>2*m)nn--;
n = min(n, nn);
//dp
vector<vector<LL>>f(n+1, vector<LL>(m+1));
LL res = 1;
for(int i = 0; i <= m; i++)f[1][i] = 1;
for(int i = 2; i <= n; i++){
for(int j = 1; j <= m; j++){
if(i>=j)continue;
f[i][j] = (f[i][j-i]+f[i-1][j-i])%mod;
}
}
for(int i = 2; i <= n; i++){
res = (res+(f[i][m]*pows(2, i-1, mod))%mod)%mod;
}
cout<<res<<"\n";
return 0;
}
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|
3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升
网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.
目录前言: 一、ASC分析代码实现二、 卡片分析代码实现三、 直线分析代码实现四、货物摆放分析代码实现小结:前言: 在刷题的过程中,发现蓝桥杯的题目和力扣的差别很大。让人有一种不一样的感觉,蓝桥杯题目偏向对于实际问题用编程去的解决,而力扣给人感觉很锻炼自己的编程思维,逻辑能力。两者结合去刷,相信会有不一样的收获。 一、ASC 已知大写字母A的ASCII码为65,请问大写字母L的ASCII码是多少?分析 这道题目看上去很简单,我们需确定自己计算的准确,所以我建议用编程去解决。代码实现publicclassTest8{publicstaticvoidmain(String[]args){Sy
使用method_missing时在Ruby中,它是almostalwaysagoodidea定义respond_to_missing?respond_to_missing?接受两个参数;我们正在检查的方法的名称(symbol),以及一个指示我们是否应该在检查中包含私有(private)方法的bool值(include_all)。现在我感到困惑的是:method_missing不接受任何可能指示它是否应该调用私有(private)方法的参数,如respond_to_missing?做。此外,method_missing无论原始方法调用是在公共(public)上下文还是私有(privat
我正在对用户的提要进行分页,并想模拟我正在使用的API的响应。API可以返回奇怪的结果,所以我想确保如果API返回我已经看到的项目,请停止分页。我使用minitest在第一次调用方法get_next_page时stub,但我想在第二次和第三次用不同的值调用它时stub。我应该只使用rSpec吗?ruby新手...这是片段test"crawlerdoesnotpaginateifnonewitemsinnextpage"do#1:A,B#2:B,D=>D#3:A=>stopcrawler=CrawlJob.newfirst_page=[{"id"=>"item-A"},{"id"=>"i
谈到现状,国内的软件测试行情目前呈现了两极分化的极端情况。一个是早期的手工测试人员吐槽工作不好做,即使有工作也是外包,而且薪资太低;一方面是很多互联网企业感叹自动化测试人才难找,有技术的自动化测试工程师,高薪难聘。这两者其实并不矛盾。手工测试工作难找也确实是目前真实的行情早期从事功能测试的手工测试人员,在测试方面大多采用手动、人工执行的方式查找软件缺陷和BUG,用行业术语来描述就是“点点点”。这种测试方式耗费大量人力和资源,工作效率却十分低下。在早期软件复杂和迭代程度不高的情况下,有资本的企业会“供养”一批这样的手工测试人员。但对测试员本身来讲,毫无技术难度的工作,和几乎没有保障的薪资水平,直
我似乎找不到一种优雅的方式来做到这一点......给定一个日期,我如何找到下一个星期二,即日历月的第2个或第4个星期二?例如:给定2012-10-19然后返回2012-10-23或给定2012-10-31然后返回2012-11-13OctoberNovemberSuMoTuWeThFrSaSuMoTuWeThFrSa12345612378910111213456789101415161718192011121314151617212223242526271819202122232428293031252627282930 最佳答案
?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是: 如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。 如果m不为0,则将时读出来,然后将分读出来,如5