题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
作为篮球队教练,你需要从以下名单中选出 1 号未至 5 号位各一名球员,组成球队的首发阵容。 每位球员担任 1 号未至 5 号位时的评分如下表所示。请你计算首发阵容 1 号未至 5 号位的评分之和最大可能是多少?
题目给出如上图所示内容zai记事本中:http://oj.ecustacm.cn/upload/file/20200122/20200122152423_34129.txthttp://oj.ecustacm.cn/upload/file/20200122/20200122152423_34129.txt
运行限制
最大运行时间:1s最大运行内存: 128M
具体的数据 *** 作:打开记事本==》选数据之间的分隔符==》编辑==》替换成Tab键==》复制到Excel中==》复制数据==》在Excel中粘贴(选择性粘贴)==》转置==》再复制到记事本把分隔符换成逗号==》加上花括号即可复制到程序中使用!
代码运行:
#includeusing namespace std; int main() { int a[]={97,92,0,0,89,82,0,0,0,95,0,0,94,0,0,0,98,93,0,0}; int b[]={90,85,0,0,83,86,0,97,0,99,0,0,91,83,0,0,83,87,0,99}; int c[]={0,96,0,0,97,0,0,96,89,0,96,0,0,87,98,0,99,92,0,96}; int d[]={0,0,0,80,0,0,87,0,0,0,97,93,0,0,97,93,98,96,89,95}; int e[]={0,0,93,86,0,0,90,0,0,0,0,98,0,0,98,86,81,98,92,81}; int ma=0,i,j,k,m,n; for(i=0;i<20;i++){ for(j=0;j<20;j++){ for(k=0;k<20;k++){ for(m=0;m<20;m++){ for(n=0;n<20;n++){ if(j!=i&&k!=i&&k!=j&&m!=i&&m!=j&&m!=k&&n!=i&&n!=j&&n!=k&&n!=m){ if(a[i]+b[j]+c[k]+d[m]+e[n]>ma) ma=a[i]+b[j]+c[k]+d[m]+e[n]; } } } } } } cout< 答案:490
填空二:年号字串题目描述
小明用字母A 对应数字1,B 对应2,以此类推,用Z 对应26。对于27以上的数字
方法一(最快)使用Excel表:
小明用两位或更长位的字符串来对应,例如AA 对应27,AB 对应28,AZ 对应52,LQ 对应329。
请问2019 对应的字符串是什么?可以发现Excel表列的编号就是按照以上规则来的,因此,可以在第一列填一个1,在向右拖动到第2019,则可以快速得到答案!BYQ。
方法二:编程那我们就是求在 10 进制下的 2019 在 26 进制下如何表示的。
思路:先推算是2019用几位数表示?A~Z:1~26;AA~ZZ:27~26*26+26=702`;所以2019有3位
代码实现:
#includeusing namespace std; int main() { int num=702; char i,j,k; for(i='A';i<='Z';i++){ for(j='A';j<='Z';j++){ for(k='A';k<='Z';k++){ num++; if(num==2019){ cout< 填空三:数列求值 题目描述
给定数列1, 1, 1, 3, 5, 9, 17, …,从第4 项开始,每项都是前3 项的和。求第20190324 项的最后4 位数字。 答案:4659
类比:斐波那契数列
注意:由于增长速度非常快,long long 都存不下,因此不能直接计算第20190324项等于几再填最后四位!!!因此需要利用“同余理论”!
代码实现:
#includeusing namespace std; int s[20190325]={0,1,1,1}; int main() { for(int i=4;i<20190325;i++){ s[i]=s[i-1]+s[i-2]+s[i-3]; s[i]=s[i]%10000; } cout< 代码改进:
#includeusing namespace std; int main() { int s1=1,s2=1,s3=1,s4; for(int i=4;i<=20190324;i++){ s4=(s1+s2+s3)%10000; s1=s2; s2=s3; s3=s4; } cout< 填空四:数的分解 题目描述
把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?注意交换3个整数的顺序被视为同一种方法。 答案:40785
例如: 1000+1001+18和 1001+1000+18 被视为同一种。
解题思路
定义三个各不相同的正整数为 i, j ,k 并且必须满足 i < j < k 这样就不存在交换任意俩个导致重复了
一般来说我们枚举 i 从 1 - 2019,枚举 j 从 1 - 2019,再枚举 k 从1 - 2019,三个 for 循环的复杂度计算机多跑一会应该也能出的来答案。
那么考虑最内层的 k ,当 i,j 确定了之后, k 的值自然而然就是确定的,那么俩个 for 循环的复杂度就是快很多了,剩下的只要检查 i,j,k 是否满足题目说的不含 2 和 4。
代码实现:
#includeusing namespace std; bool check(int x){ while(x) { if(x%10==2||x%10==4) return false; else{ x = x/10; } } return true; } int main() { int ans=0; int i,j,k; for(i=1;i<=2019;i++){ for(j=i+1;j<=2019;j++){//j>i;k>j==>保证不会因顺序重复 k=2019-i-j; if(check(i)&&check(j)&&check(k)&&j 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)