C C++最全蓝桥杯2019年软件类省赛:真题+解答_蓝桥杯19套,2024年最新做了6年C C++开发

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

string int_str(int a)
{
string out;
stringstream Convert;
Convert<<a;
Convert>>out;
return out;
}

int main()
{
int a=0;
cin>>a;
long long sum=0;
for(int i=1; i<=a; ++i)
{
string str = int_str(i);
if(str.find(‘2’,0)!=string::npos||str.find(‘0’,0)!=string::npos||str.find(‘1’,0)!=string::npos||str.find(‘9’,0)!=string::npos)
sum += pow(i,3);
}
cout<<sum<<endl;
return 0;
}


**答案:** 4097482414389




---


### 试题B:子串数字


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210416091522478.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dqaW5qaWU=,size_16,color_FFFFFF,t_70)  
 **解析:**



#include
#include<math.h>
using namespace std;

int main()
{
long long sum=0;
int num=0;
string s;
cin>>s;
for(int i=0; i<s.size(); ++i)
{
num = s[s.size()-1-i]-‘A’+1;
sum += num*pow(26, i);
}
cout<<sum<<endl;
return 0;
}


**答案:** 3725573269




---


### 试题C:质数


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210416132508741.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dqaW5qaWU=,size_16,color_FFFFFF,t_70)  
 **解析:**



#include
#include<math.h>
using namespace std;

//判断n是否是质数,n>=1
bool isZS(int n)
{
if(n1||n2||n3)
return true;
else
{
for(int i=2; i<=sqrt(n); ++i)
{
if(n%i
0)
return false;
}
return true;
}
}

int main()
{
int j=2,count=0;
while(count<2019)
{
if(isZS(j))
count++; //计数
j++;
}
cout<<j-1<<endl; //因为在while中最后是加1的,所以输出j-1
return 0;
}


**答案:** 17569


### 试题D: 最短路


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210416134019268.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dqaW5qaWU=,size_16,color_FFFFFF,t_70)  
 **解析:** 本题是填空题,可直接看出答案为6,最佳路径:S-J-B-A或者S-M-L-H-D-A。




---


### 试题E: RSA解密


![在这里插入图片描述](https://img-blog.csdnimg.cn/2021041613444261.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dqaW5qaWU=,size_16,color_FFFFFF,t_70)  
 **解析:**  
 本题是填空题中最难的一道。本题涉及到很多数论的知识:质因子分解,扩展欧几里得算法,快速幂算法,利用快速乘算法求解快速幂(mod太大导致不能直接乘,而是需要使用加法来替代乘法)。另外还需要注意扩展欧几里得算法求解出来的乘法逆可能是负数,所以需要使用公式进行转换。



#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;
typedef long long LL;
/*
首先生成两个质数p, q,令n = p * q,设d 与(p -1)*(q -1) 互质,则可
找到e 使得d * e 除(p-1)*(q -1) 的余数为1。
现在你知道公钥中n = 1001733993063167141, d = 212353,同时你截获了别人发送的密文C = 20190324,请问,原文是多少?
当收到密文C 时,可使用私钥解开,计算公式为X = C^e mod n。答案:579706994112328949
*/
/*
p=891234941 q=1123984201
*/
//扩展欧几里得算法
void exgcd(LL a,LL b,LL&d,LL& x,LL& y){//d=gcd(a,b)
if(!b){
d=a;
x=1;
y=0;
}else{
exgcd(b,a%b,d,y,x);
y-=x*(a/b);
}
}
//快速乘
LL quickMul(LL a,LL b,LL mod){
LL ans=0;//这里初值为0
while(b){
if(b&1)
ans=(ans+a)%mod;
a=(a+a)%mod;
b>>=1;
}
return ans%mod;
}
LL quickPower(LL a,LL b,LL mod){
LL ans=1;//注意这里初值是1
while(b){
if(b&1)
ans=quickMul(ans,a,mod)%mod;
a=quickMul(a,a,mod)%mod;
b>>=1;
}
return ans%mod;
}
int main(){
LL n=1001733993063167141;
//分解质因数
for(LL i=2;i*i<=n;i++){
while(n%i0){
//cout<<i<<" "<<n/i<<endl;//两个质数
n/=i;
}
}
LL p=891234941,q=1123984201;
LL mod=(p-1)*(q-1);
LL d=212353;
LL e,y,gcd;
//d*e
1(%mod)
//扩展欧几里得算法
exgcd(d,mod,gcd,e,y);
e=(e%mod+mod)%mod;//这里是因为e可能为负数
//cout<<e<<endl;
LL c=20190324;
n=1001733993063167141;
//X = C^e mod n
LL x;
//快速幂和快速乘相结合
cout<<quickPower(c,e,n)<<endl;
return 0;
}




---


### 试题F: Fibonacci 数列与黄金分割


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210416134606984.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dqaW5qaWU=,size_16,color_FFFFFF,t_70)  
 **解析:**



#include
#include
using namespace std;

//Fibonacci 数列

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

i0l-1715709764955)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值