目录
[传智杯 #3 决赛] 课程
题目背景
题目描述
输入格式
输出格式
输入输出样例
[蓝桥杯 2022 省 B] 刷题统计
题目描述
输入格式
输出格式
输入输出样例
[蓝桥杯 2021 省 AB2] 小平方
题目描述
输入格式
输出格式
输入输出样例
[传智杯 #3 决赛] 商店
题目背景
题目描述
输入格式
输出格式
输入输出样例
disangan233 喜欢数数,于是他想让你帮他回答一个问题。
传智专修学院提供 A,B 两个课程,分别有 n,m 个学生报名。报名 A 的学生的编号为 an,报名B的学生的编号为bm,求有多少个学生同时报名了两个课程。
对于所有数据,n,m,ai,bi≤20,保证每个课程报名的学生编号不会重复。
输入共 3 行。
第 1 行输入 22 个正整数 ,n,m。
第 2 行输入 n 个正整数 a1…an,表示报名课程 A 的学生编号。
第 3 行输入 m 个正整数 b1…bm,表示报名课程 B 的学生编号。
学生编号不保证从小到大排序。
输出共 1 行 1 个整数,表示答案。
输入 #1
5 5 1 2 3 4 5 1 3 4 5 6
输出 #1
4
#include
int main()
{
int n = 0, m = 0, arr1[20] = {0}, arr2[20] = {0}, count = 0;
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i++)
{
scanf("%d", &arr1[i]);
}
for (int j = 0; j < m; j++)
{
scanf("%d", &arr2[j]);
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (arr1[i] == arr2[j])
{
count++;
}
}
}
printf("%d", count);
return 0;
}
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
输入一行包含三个整数 a,b 和 n.
输出一个整数代表天数。
输入 #1
10 20 99
输出 #1
8
#include
int main()
{
long long int a = 0, b = 0, n = 0, sum = 0, count = 0;
scanf("%lld%lld%lld", &a, &b, &n);
while (sum < n)
{
for (int i = 1; i <= 5; i++)
{
if (sum >= n)
{
break;
}
sum += a;
count++;
}
for (int i = 6; i <= 7; i++)
{
if (sum >= n)
{
break;
}
sum += b;
count++;
}
}
printf("%lld", count);
return 0;
}
小蓝发现,对于一个正整数 n 和一个小于 n 的正整数 v,将 v 平方后对 n 取余可能小于 n 的一半,也可能大于等于 n 的一半。
请问,在 1 到 n−1 中, 有多少个数平方后除以 n 的余数小于 n 的一半。
例如,当 n=4 时,1,2,3 的平方除以 4 的余数都小于 4 的一半。
又如,当 n=5 时, 1,4 的平方除以 5 的余数都是 1,小于 5 的一半。而 2,3 的平方除以 5 的余数都是 4, 大于等于 5 的一半。
输入一行包含一个整数 n 。
输出一个整数,表示满足条件的数的数量。
输入 #1
5
输出 #1
2
#include
#include
int main()
{
int n = 0, sum = 0, count = 0;
double num = 0;
scanf("%d", &n);
for (int i = 1; i < n; i++)
{
sum = i;
int rs = pow(sum, 2);
rs %= n;
num = n / 2.0;
if (rs < num)
{
count++;
}
}
printf("%d", count);
return 0;
}
disangan333 想给 disangan233 买一个礼物,于是他和你一起逛商店。
有 n 名同学去逛商店,店里有 m 个物品,第 i 人有 wi 块钱,第 i 个物品价格 ci 元。
每个人至多买一个物品,每个物品只能被买一次,问最多有多少人能买到物品。
对于所有数据,n,m≤10五次方,wi,ci≤10九次方。
输入共 3 行。
第 1 行输入 2 个正整数 n,m。
第 2 行输入 n 个整数 w1…wn,wi 表示第 i 人的钱。
第 3 行输入 m 个整数 c1…cm,ci 表示第 i 个物品的价格。
对于所有数据,n,m≤10五次方,wi,ci≤10九次方。
输入 #1
15 20 4 3 9 10 7 7 5 3 6 1 8 6 6 1 5 12 4 1 9 8 5 8 6 4 5 18 8 14 9 9 7 20 11 8 19
输出 #1
10
以下博主方法优点就是可以做出结果来,缺点就是时间复杂度太大。
#include
int main()
{
int n = 0, m = 0, arr[100000] = { 0 }, str[100000] = { 0 }, temp = 0;
int a = 0, b = 0, count = 0;//a,b就是轮到第几个人买东西,轮到卖什么东西
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
for (int j = 0; j < m; j++)
{
scanf("%d", &str[j]);
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
for (int i = 0; i < m - 1; i++)
{
for (int j = 0; j < m - 1 - i; j++)
{
if (str[j] > str[j + 1])
{
temp = str[j + 1];
str[j + 1] = str[j];
str[j] = temp;
}
}
}
//两个数组升序排序
while (a <= n && b <= m)
{
if (arr[a] >= str[b]) //如果买东西的钱大于等于商品价格就进入循环
{
count++; //记录购买次数
a++;
b++;
}
else
{
a++; //买不起就下一个人买
}
}
printf("%d", count);
return 0;
}
小伙们每天都要记得刷题哦~