第一题
试题编号:20210701-1
试题名称:标题统计
时间限制: 1.0s
内存限制: 128.0MB
【问题描述】
小明阅读了一篇特别优美的英文文章,读到最后总结段落的时候,突发奇
想,想要数一数这个段落中有多少个字符?注意:段落中可能包含大、小写英
文字母、数字字符和空格。在统计该段落字符数时,空格不计算在内。并且段
落所有字符长度小于等于 100。
【输入描述】
输入数据只有一行,一个字符串 s。
【输出描述】
输出一个整数,即作文标题的字符数(不含空格)。
【输入样例】
Ca 45
【输出样例】
4
#include <iostream>
#include <string>
using namespace std;
int num=0;
string s;
int main()
{
getline(cin,s);
for (int i = 0; i < s.size(); ++i)
{
if (s[i]>='a'&& s[i]<='z' || s[i]>='A'&& s[i]<='Z' || s[i]>='0'&& s[i]<='9')
{
num++;
}
}
cout << num << endl;
return 0;
}
第二题
试题编号:20210702-1
试题名称:计数问题
时间限制: 1.0s
内存限制: 128.0MB
【题目描述】
小明和小红玩一个数字游戏,游戏规则是一方给出一个数字 n,对方需要说
出 1 到 n 的所有整数中,数字 x ( 0≤x≤9 ) 共出现了多少次?比如给出一个
数字 12,在 1 到 12 中数字 2 出现了几次?即在 1,2,3,4,5,6,7,8,9,10,11,12
中,数字 2 出现了 2 次 (n≤65535) 。
【输入描述】
输入两个正整数 n 和 x,之间用一个空格隔开。
【输出描述】
输出一个整数,表示 x 出现的次数。
【输入样例】
11 1
【输出样例】
4
#include <iostream>
using namespace std;
int n,d,ans,a;
int main()
{
cin>>n>>d;
for (int i = 0; i <= n; ++i)
{
a=i;
if (a==0&&d==a)
{
ans++;
}
while(a){
if (a%10==d)
{
ans++;
}
a/=10;
}
}
cout<<ans;
return 0;
}
第三题
试题编号:20210701-2
试题名称:台阶问题
时间限制: 1.0s
内存限制: 128.0MB
【问题描述】
小明放学回家会经过一个天桥到马路对面才可以搭乘公交,而登上天桥需
要迈 26 级台阶。他突然想到数学课上的一个问题:如果我每一步只能迈上 1 个
或 2 个台阶。那么面对不同级数的楼梯,有多少种不同的走法呢?
请你利用计算机的优势,计算 N(N<=39)级台阶一共有多少种上法,帮助
小明寻找答案。
【输入描述】
输入一行,正整数 N(N<=39)
【输出描述】
输出一行,有多少种不同的上法
【输入样例】
8
【输出样例】
34
#include <iostream>
using namespace std;
int n,a,b,c;
int main()
{
cin>>n;
a=1;
b=1;
for (int i = 2; i <=n; ++i)
{
c=a+b;
a=b;
b=c;
}
if (n==1)
{
c=1;
} else if (n==2)
{
c=2;
}
cout << c << endl;
return 0;
}
第五题
试题编号:20210701-5
试题名称:最小生成树
时间限制: 1.0s
内存限制: 128.0MB
【题目描述】
对于一个给定的图,它的所有生成树中,最大边和最小边的边权差最小是多
少。
【输入格式】
输入数据共 m+1 行。
第 1 行两个整数 n 和 m,用空格隔开,分别表示图的顶点数和边数。
接下来 m 行,每行 3 个整数 u,v,w,用空格隔开,表示定点 u 和定点 v 之
间有一条权值为 w 的无向边。
【输出格式】
输出一行,一个非负整数,表示所有生成树中,最大边和最小边的最小边权
差。若图本身不连通,则输出-1。
【输入样例 1】
4 5
1 2 3
1 3 5
1 4 6
2 4 6
3 4 7
【输出样例 1】
1
【输入样例 2】
5 10
1 2 9384
1 3 887
1 4 2778
1 5 6916
2 3 7794
2 4 8336
2 5 5387
3 4 493
3 5 6650
4 5 1422
【输出样例 2】
1686
【数据规模与约定】
20%的数据:n ≤ 10;
100%的数据:2 ≤ n ≤ 100 , 0 ≤ m ≤ 3000。