01 空间
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位 二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问 256MB 的空间可以存储多少个 32 位二进制整数?
运行限制
最大运行时间:1s
最大运行内存: 128M
解析
1MB = 1024KB ``1KB = 1024字节(byte) 1字节 = 8位(bits)
一个32位的整数为四字节。 注意溢出问题
#include <stdio.h>
int main()
{
long long int a;
long long int b;
a=256*1024*1024;
b=a/4;
printf("%lld",b);return b;
}
02 蛇形填数
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列的数是多少?
运行限制
最大运行时间:1s
最大运行内存: 128M
解析
#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{// 请在此输入您的代码/*1 2 6 7 15 ...3 5 8 14 ...4 9 13 ...10 12 ...11 ......分析可以知道(1)第一行,第一列 1 = 0*0 + 1*1;(2)第二行,第二列 5 = 1*1 + 2*2;(3)第三行,第三列 13 = 2*2 + 3*3;....(20)第20行,第20列 ? = 19*19 + 20*20;*/printf("%d",19*19 + 20*20);return 0;
}
03 组队
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容。
每位球员担任 1 号位至 5号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少?
图片描述
运行限制
最大运行时间:1s
最大运行内存: 128M
#include <iostream>
using namespace std;int one[20] = {97, 92, 0, 0, 89, 82, 0, 0, 0, 95, 0, 0, 94, 0, 0, 0, 98, 93, 0, 0};
int two[20] = {90, 85, 0, 0, 83, 86, 0, 97, 0, 99, 0, 0, 91, 83, 0, 0, 83, 87, 0, 99};
int three[20] = {0, 96, 0, 0, 97, 0, 0, 96, 89, 0, 96, 0, 0, 87, 98, 0, 99, 92, 0, 96};
int four[20] = {0, 0, 0, 80, 0, 0, 87, 0, 0, 0, 97, 93, 0, 0, 97, 93, 98, 96, 89, 95};
int five[20] = {0, 0, 93, 86, 0, 0, 90, 0, 0, 0, 0, 98, 0, 0, 98, 86, 81, 98, 92, 81};
int main()
{int maxsum=0;for(int i=0;i<20;i++){for(int j=0;j<20;j++){if(j==i) continue;for(int k=0;k<20;k++){if(k==i||k==j) continue;for(int m=0;m<20;m++){if(m==i||m==j||m==k) continue;for(int n=0;n<20;n++){if(n==i||n==j||n==k||n==m) continue;if((one[i]+two[j]+three[k]+four[m]+five[n])>maxsum)maxsum=one[i]+two[j]+three[k]+four[m]+five[n];}}}}}cout<<maxsum<<endl;return 0;
}
04 裁纸刀
问题描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝有一个裁纸刀,每次可以将一张纸沿一条直线裁成两半。
小蓝用一张纸打印出两行三列共 6 个二维码,至少使用九次裁出来,下图给出了一种裁法。
图片描述
在上面的例子中,小蓝的打印机没办法打印到边缘,所以边缘至少要裁 4 次。另外,小蓝每次只能裁一张纸,不能重叠或者拼起来裁。
如果小蓝要用一张纸打印出 20 行 22 列共 440 个二维码,他至少需要裁多少次?
运行限制
最大运行时间:1s
最大运行内存: 256M
解析
找规律,一个二维码是0+外围4刀,两个是1+4,四个是3+4,六个是5+4
#include <iostream>
using namespace std;
int main()
{int s;s=440+4-1;cout<<s;// 请在此输入您的代码return 0;
}
05 时间显示
题目描述
小蓝要和朋友合作开发一个时间显示的网站。
在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 1970 年 11 月 11 日 00:00:00到当前时刻经过的毫秒数。
现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要显示出时分秒即可,毫秒也不用显示,直接舍去即可。
给定一个用整数表示的时间,请将这个时间对应的时分秒输出。
输入描述
输入一行包含一个整数,表示时间。
输出描述
输出时分秒表示的当前时间,格式形如 HH:MM:SS,其中 HH 表示时,值为 0 到 23,MM 表示分,值为 0 到 59,S 表示秒,值为 0 到 59。时、分、秒 不足两位时补前导 0。
输入输出样例
示例 1
输入
46800999
输出
13:00:00
示例 2
输入
1618708103123
输出
01:08:23
的正整数。
运行限制
最大运行时间:1s
最大运行内存: 512M
#include <iostream>
using namespace std;
const int dayTime = 24 * 60 * 60; //记录一天有多少秒
int main()
{long long time;cin>>time;//可忽略毫秒数,先将毫秒转化成秒,后面不满1秒的毫秒数自动忽略例如//(999毫秒不足一秒(1000毫秒),可忽略)time = time / 1000;//计算最后一天的时间 看最后一天多少秒 不满3600秒的不算作一天//算作是余数time = time % dayTime;int h = time / 3600; //计算这个余数包含多少个小时time = time % 3600; //不足3600秒的当作是余数,取余得出不足一小时的秒数int m = time / 60; //上一步取余得到后的数包含多少分钟int s = time % 60;//取余得到 不足1分钟的秒数//1,618,708,103//86,400printf("%02d:%02d:%02d",h,m,s);return 0;
}
06 既约分数
#include<stdio.h>
int s(int a,int b)
{if(a%b==0) return b;else return s(b,a%b);
}
int main()
{int sum=0;for(int i=1;i<=2020;i++){for(int j=1;j<=2020;j++){if(s(i,j)==1)sum++;}}printf("%d",sum);return 0;
}
07 特别数的和
示例
输入
40
输出
574
#include <stdio.h>
int main()
{int n,i,j,k,s=0;scanf("%d",&n);for(i=1;i<=n;i++){j=i;while(j){k=j%10;if(k==2 || k==0 || k==1 || k==9){s=s+i;break;}j=j/10;}}printf("%d",s);
}
08 年号字串
#include <iostream>
using namespace std;
/10进制转26进制
/*2019 / 26 = 77 2019 % 26 = 17=Q77 / 26 = 2 77 % 26 = 25=Y2=B最终答案:BYQ
*/
void solve(int n)
{if(!n){return;}solve(n/26);cout<<(char)(n%26+64);
}
int main()
{// 请在此输入您的代码solve(2019);return 0;
}
09 排列字母
#include<stdio.h>
#include<string.h>
int main()
{char a[100];char t;int i,j;scanf("%s",a);for(i=0;i<strlen(a)-1;i++){for(j=0;j<strlen(a)-1-i;j++){if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}}}printf("%s",a);return 0;
}
10 ASC
#include <iostream>
using namespace std;
int main()
{printf("%d",'L');return 0;
}