目录
第一题 ASC
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
已知大写字母 A 的 ASCII 码为 65,请问大写字母 L 的 ASCII 码是多少?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
-
#include <iostream> using namespace std; int main() { printf("%d",'L'); return 0; }
其他:
-
#include<iostream> using namespace std; int main(){ printf("%d\n",'L'); for(int i='A';i<='Z';i++){ printf("%c:%d\n",i,i); } for (int i='a';i<='z';i++){ printf("%c:%d\n",i,i); } for (int i=91;i<=97;i++){ printf("%d:%c\n",i,i); } return 1; }
A=65,a=97
第二题 空间
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝准备用 256MB256MB 的内存空间开一个数组,数组的每个元素都是 3232 位 二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问 256MB256MB 的空间可以存储多少个 3232 位二进制整数?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
#include <iostream>
using namespace std;
int main()
{
int m = 256;
m = m *1024*1024*8.0/32.0;
cout <<m;
return 0;
}
第三题 约数个数
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
12000001200000 有多少个约数(只计算正约数)。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
#include <iostream>
using namespace std;
int main()
{
int cnt = 0;
for (int i=1;i<=1200000;i++)
{
if (1200000%i==0){
cnt++;
}
}
cout <<cnt<<endl;
return 0;
}
.
第四题 单词分析
题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入描述
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
输入输出样例
示例 1
输入
lanqiao
输出
a
2
示例 2
输入
longlonglongistoolong
输出
o
6
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
#include <iostream>
using namespace std;
string s;
int num[27];
int main()
{
cin >>s;
int max = 0;
for (int i=0;i<s.length();i++)
num[s[i]-'a']++;
char ans;
for (int i =0;i<27;i++)
{
if (num[i]>max)
max = num[i],ans = i+'a';
}
cout <<ans <<endl<<max<<endl;
return 0;
}
全局变量,数组默认初始化为0,
第五题 既约分数
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如果一个分数的分子和分母的最大公约数是 11,这个分数称为既约分数。
例如 \frac{3}{4} ,\frac{1}{8} ,\frac{7}{1}43,81,17, 都是既约分数。
请问,有多少个既约分数,分子和分母都是 11 到 20202020 之间的整数(包括 11 和 20202020)?
运行限制
- 最大运行时间:2s
- 最大运行内存: 128M
#include <iostream>
using namespace std;
string s;
int num[27];
int gcd(int i,int j){
if (j==0) return i;
else
return gcd(j,i%j);
}
int main()
{
int ans = 0;
for (int i=1;i<=2020;i++)
for(int j=1;j<=2020;j++)
if(gcd(i,j)==1) ans ++;
cout <<ans<<endl;
return 0;
}
或者__gcd(i,j)==1,c语言自带的函数。
欧几里得gcd,辗转相除法
第六题 时间显示
输出描述
输出时分秒表示的当前时间,格式形如 HH:MM:SS
,其中 HH
表示时,值为 00 到 2323,MM
表示分,值为 00 到 5959,SS
表示秒,值为 00 到 5959。时、分、秒 不足两位时补前导 00。
输入输出样例
示例 1
输入
46800999
输出
13:00:00
示例 2
输入
1618708103123
输出
01:08:23
评测用例规模与约定
对于所有评测用例,给定的时间为不超过 10^{18}1018 的正整数。
运行限制
- 最大运行时间:1s
- 最大运行内存: 512M
#include <iostream>
using namespace std;
typedef long long LL;
int main(){
LL n;
cin >>n;
n /= 1000;
n %= 60*60*24;
printf("%02d:",n/60/60);
n%=60*60;
printf("%02d:",n/60);
n%=60;
printf("%02d\n",n ) ;
return 0;
}
%02d,占用两个位置,不足则用0补充。
第七题 特殊时间
问题描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
2022 年 2 月 22 日 22: 2022:20 是一个很有意义的时间, 年份为 2022 , 由 3 个 2 和 1 个 0 组成, 如果将月和日写成 4 位, 为 0222 , 也是由 3 个 2 和 1 个 0 组 成, 如果将时间中的时和分写成 4 位, 还是由 3 个 2 和 1 个 0 组成。
小蓝对这样的时间很感兴趣, 他还找到了其它类似的例子, 比如 111 年 10 月 11 日 01: 11,220201:11,2202 年 2 月 22 日 22: 0222:02 等等。
请问, 总共有多少个时间是这种年份写成 4 位、月日写成 4 位、时间写成 4 位后由 3 个一种数字和 1 个另一种数字组成。注意 1111 年 11 月 11 日 11: 1111:11 不算,因为它里面没有两种数字。
运行限制
- 最大运行时间:1s
- 最大运行内存: 512Mz`
#include <iostream>
using namespace std;
int main()
{
int res = 0;
for (int u=0;u<=9;++u) //出现一次的
for (int v=0;v<=9;++v) //出现三次的
{
if(u==v) //如果相同则跳过
continue;
int a=0,b=0,c=0; //a 年 b 月日 c时分
for(int pos = 0;pos<4;++pos){
int nums[4];
for (int i=0;i<4;++i) //不同位置的可能
if (i==pos)
nums[i] = u;
else
nums[i] = v;
int y = nums[0]*1000+nums[1]*100+nums[2]*10+nums[3];
a++;
int m = y/100,d=y%100;
if(m>=1 && m<= 12 && d>=1 && d<=30)
b++;
if(m>=0 && m<= 23 && d>=0 && d<=59)
c++;
}
res +=a*b*c;
}
cout <<res <<endl;
// 请在此输入您的代码
return 0;
}
第八题 相乘
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝发现,他将 11 至 10000000071000000007 之间的不同的数与 20212021 相乘后再求除以 10000000071000000007 的余数,会得到不同的数。 小蓝想知道,能不能在 11 至 10000000071000000007 之间找到一个数,与 20212021 相乘后 再除以 10000000071000000007 后的余数为 999999999999999999。如果存在,请在答案中提交这个数; 如果不存在,请在答案中提交 00。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
#include <iostream>
using namespace std;
typedef long long LL;
int main()
{
for (LL i = 1;i<=1000000007;i++){
if ((i*2021)%1000000007==999999999){
cout << i<<endl;
return 0;
}
}
cout << 0 <<endl;
// 请在此输入您的代码
return 0;
}
#include <climits>
cout << LONG_LONG_MAX<<endl;//输出longlong的最大范围
cout << INT_MAX << endl;//int的最大范围