2019年第十届蓝桥杯C/C++研究生组

试题A:立方和(填空题5分)

  • 题目描述
    小明对数位中含有2、0、1、9的数字很感兴趣,在1到40中这样的数包括1、2、9、10至32、39、40,共28个,它们的和是574,平方和是14362,立方和是400816.
    请问,在1到2019中,所有这样的数的立方和是多少?

  • 题目思路
    求数字的立方和很简单,题目却做出了一个限制,便是在1至2019中包含2、0、1、9四个数字之一的数。这个只需要一个取余运算便可进行判断。另外一个重要的点就是计算数据的溢出问题,因此选取double类型。

  • 题目代码

#include<bits/stdc++.h>
using namespace std;
bool ifCon(int n){
	while(n){
		int temp=n%10;
		if(temp==2 || temp==0 || temp==1 || temp==9){
			return true;
		}
		n/=10;
	}
	return false;
}
int main() {
	long long sum=0;
	for(int i=1;i<=2019;i++){
		if(ifCon(i)){
			sum+=pow(i,3);
		}
	}
	cout<<sum<<endl; // 结果是:4097482414389
	return 0;
}

试题B:字串数字(5分)

  • 问题描述
    小明用字母A对应数字1,B对应2,以此类推,用Z代表26.对应于27以上的数字,小明用两位或更长位的字符串来对应,例如AA对应27,AB对应28,AZ对应52,LQ对应329。
    请问,LANQIAO对应的数字是多少?

  • 思路
    简单来看,就是将10进制变成26进制,仿写26进制来做出答案。但此题是个填空题,使用计算器暴力解决是简单的。

  • 题目代码

#include<bits/stdc++.h>
using namespace std;
int main(){
	string list="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	string x="LANQIAO";
	long long sum=0;
	int y=0; //保存次方
	for(int i=x.length()-1;i>=0;i--,y++){
		int temp=list.find(x[i])+1;
		sum+=temp*pow(26,y);
	}
	cout<<sum<<endl;  // 结果是:3725573269
	return 0;
}

试题C:质数

  • 问题描述
    我们知道第一个质数是2,第二个质数是3,第三个质数是5······请你计算第2019个质数是多少?

  • 思想
    这道题就是计算质数,使用循环进行暴力计算,计算到2019个质数退出循环。

  • 题目代码

#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n)
{
    // 判断n是否为质数,根据定义直接判断从2到n-1是否存在n的约数即可
    for(int i=2; i<n; i++)
    {
        if(n%i==0)
        {
            return false;
        }
    }
    return true;
}
int main()
{
    int count=1;//2是素数
    int i=2;
    while(count!=2019)
    {
        i++;//从3开始判断
        if(isPrime(i))
        {
            count++;
        }

    }
    cout<<i<<endl; //结果是:17569
}

试题D:最短路(10分)

  • 问题描述
    如下图所示,G是一个无向图,其中蓝色边的长度是1,橘色边的长度是2,绿色边的长度是3,计算从A到S的最短距离是多少?6 A–>B–>J–>S
    在这里插入图片描述
  • 思路
    这个题是最短路径问题。简单的思路就是,一个数组,存储两点之间的距离,然后定义一个数组记录始点到终点的最短距离。例如:A->E,A->D,A->C,A->B,存储之间的距离,为1,1,1,2;然后E->I,E->D,E->H,D->I,D->H,D->G,D->E,D->C······距离分别为3,1,1,1,2,1,2,1,2·····依次存储,得出A->S的最短距离并输出。

试题E:RSA解密(15分)

  • 题目描述
    RSA是一种经典的加密算法。它的基本加密过程如下。
    首先生成两个大质数p,q, 令n = pq,设d与(p-1)(q-1)互质,则 可以找到e,使得de除以(p-1)(q-1)的余数为1。
      n,d,e组成了私钥,n,d构成了公钥。
      当使用公钥加密一个整数X时(X<=n-1),计算C = X^d mod n,则C是加密后的密文。
      当收到密文C时,可以使用私钥解开,计
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值