蓝桥杯练习----2020第一场

第二题:年号字串(本题总分:5 分)

小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。对于 27
以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对
应 28,AZ 对应 52,LQ 对应 329。
请问 2019 对应的字符串是什么?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个大写英文字符串,在提交答案时只填写这个字符串,注意全部大写,填写多
余的内容将无法得分。

方法一:递归

#include<bits/stdc++.h>
using namespace std;
void solve(int n)
{
	if(!n) return; //递归出口,n=0时
	solve(n/26);  
	cout<<(char)(n%26+64); 
}
int main()
{
	solve(2019);
	return 0;
}

方法二:使用栈,先进后出

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n=2019;
	stack<int> s;
	int temp;
	while(n)
	{
		temp=n%26;
		s.push(temp);  //入栈
		n/=26;
	}
	while(!s.empty())
	{
		char c=s.top()+64;  //栈顶元素变为字母
		cout<<c;
		s.pop(); //从栈顶移除第一个元素
	}
	return 0;
}

第三题:数列求值 (本题总分:10 分)

给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求
第 20190324 项的最后 4 位数字。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个 4 位整数(提示:答案的千位不为 0) ,在提交答案时只填写这个整数,填写
多余的内容将无法得分。

 注意:(1)判断会爆long long!!!所以取余,只要后四位数!!!

            (2)不必非用数组,每个都存进数组!!!如下面代码!!!

#include<bits/stdc++.h>
using namespace std;
#define N 
int main()
{
	int a=1,b=1,c=1,d,i=0;
	while(1)
	{
		d=(a+b+c)%10000;
		a=b;
		b=c;
		c=d;
		i++;
		if(i==20190321)  //当i=20190321时,输出,并结束循环
		{
			cout<<d<<endl;
			break;
		}
	}
	return 0;
}

第四题:数的分解(本题总分:10 分)

【问题描述】
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包
含数字 2 和 4,一共有多少种不同的分解方法?
注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和
1001+1000+18 被视为同一种。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

 本题参考:点这里哟

#include<bits/stdc++.h>
using namespace std;

bool check(int n) //判断是否有2或4 
{
	while(n)
	{
		if(n%10==2||n%10==4)
		  return false;
		n/=10;
	}
	return true;
}



int main()
{
	int n=2019,ans=0;
	for(int i=1;i<n;i++)
	{
		for(int j=i+1;j<n-j-i;j++) //j=i+1,使得a,b,c不会相等,也不会重复出现(一下子判断了两个条件!!!)
		                           //另一个数字为n-j-i,降低时间复杂度 
		{
			if(check(i)&&check(j)&&check(n-j-i))
			{
				ans++;
			}
		}
	 } 
	 cout<<ans;
	 return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值