第一题
题目大意
大概意思是计算篮球队员得分之和的最大值
思路
分别计算每一列的最大值,然后相加,注意的是,必须不同行,应为一个队员只能在一个位置
答案:490
第二题
题目大意
用A表示1,B表示2,其他类似,求2019的表示
思路
直接实用excel,因为这个跟excel的列标号一致
答案:BYQ
第三题
题目大意
一个数列的前三项都为1,第n项为n-1,n-2, n-3之和,求20190324的值
代码
#include <iostream>
using namespace std;
int tab[30000000];
int main(){
tab[1] = 1;
tab[2] = 1;
tab[3] = 1;
for(long long i = 4; i < 30000000; i++){
tab[i] = tab[i-1] + tab[i-2] + tab[i-3];
tab[i] %= 10000;
}
cout << tab[20190324];
//4659
return 0;
}
第四题
题目大意
将2019分解为不包含2和4的不同的三个数之和,三个数没有顺序
代码
#include <iostream>
using namespace std;
int f(int n){
while(n > 0){
if(n % 10 == 2 || n%10 == 4){
return 0;
}
n /= 10;
}
return 1;
}
int main(){
int ans = 0;
for(int i = 1; i < 2019; i++){
for(int j = i+1; j < 2019; j++){
int k = 2019 - i - j;
if(k > j && f(i) && f(j) && f(k)){
// if(ans < 100){
// cout << i << " " << j << " " << k << endl;
// }
ans++;
}
}
}
cout << ans;
return 0;
}
第6题
题目大意
输入n,求1到n中的数包含2,0,1,9的数的和
代码
#include <iostream>
using namespace std;
int f(int n){
while(n > 0){
if(n%10 == 2 || n%10 == 0 || n%10 == 1|| n%10 == 9){
return 1;
}
n /= 10;
}
return 0;
}
int main(){
long long n;
long long ans = 0;
cin >> n;
for(int i = 1; i <= n; i++){
if(f(i)){
ans += i;
}
}
cout << ans;
return 0;
}
其他题就记不到了,欢迎补充。