题目A 组队
【问题描述】
作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容。 每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LqxJI2WQ-1645677075334)(C:\Users\Sorakun\AppData\Roaming\Typora\typora-user-images\image-20220221211858554.png)]
解:
我的做法是找出每一列的最大值然后加起来,答案是492。然后就错了!!!
492答案对应如下方案:
1号位 17号;2号位 20号;3号位 17号;4号位 17号;5号位 18号
不行的原因是每个人只能担任一个位置,这里的17号重复了3次
正确答案一共有三种,因为17号同时拥有三个位置的最大值,认选一种。答案应该是490
题B 年号字符
【问题描述】
小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。对于 27 以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对 应 28,AZ 对应 52,LQ 对应 329。 请问 2019 对应的字符串是什么?
解:
以为就是很普通的10进制转26进制,结果我反应半天也没搞出来,网上一些答案的代码也是错的(只是刚好2019对应的是对)
正确的代码如下:
#include<iostream>
using namespace std;
void resolve(int p){
if(p>0){
if(p%26 == 0){
//如果可以整除 说明是Z
resolve((p-26)/26);
cout<<"Z";
}
else{//如果不能整除,模26的结果对应着是第几个字母
resolve(p/26);
cout<<char('A'+(p%26-1));
}
}
}
int main()
{
int p;
cin>>p;
resolve(p);
}
正确答案是:BYQ
题C 数列求值
【问题描述】
给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求 第 20190324 项的最后 4 位数字。
解:
好不容易终于做对一道。
这么大的数,肯定超出long long了,不过这里也没必要使用高精度。这明显是斐波那契数列的变形,每一次求和对10000取模再进行下一步运算,这样每一步都取10000的模不会对结果造成影响。
计算使用的代码如下:
#include<iostream>
using namespace std;
int main()
{
int a,b,c;
a=1,b=1,c=1;
int ans;
int n;
cin>>n;
n=n-3;
while(n--){
ans=(a+b+c)%10000;
a=b;
b=c;
c=ans;
}
cout<<ans;
}