2023CCF 非专业级软件能力认证
CSP-J/S 2023 第二轮认证
入门级
点个赞,收藏,和关注吧!
时间: 2023 年 10 月 21 日 08:30 ∼ 12:00
题目名称 | 小苹果 | 公路 | 一元二次方程 | 旅游巴士 |
题目类型 | 传统型 | 传统型 | 传统型 | 传统型 |
目录 | apple | road | uqe | bus |
可执行文件名 | apple | road | uqe | bus |
输入文件名 | apple.in | road.in | uqe.in | bus.in |
输出文件名 | apple.out | road.out | uqe.out | bus.out |
每个测试点时限 | 1.0 秒 | 1.0 秒 | 1.0 秒 | 1.0 秒 |
内存限制 | 512 MiB | 512 MiB | 512 MiB | 512 MiB |
测试点数目 | 10 | 20 | 10 | 20 |
测试点是否等分 | 是 | 是 | 是 | 是 |
提交源程序文件名
对于C++ 语言 | apple.cpp | road.cpp | uqe.cpp | bus.cpp |
编译选项
对于C++ 语言 | ‐O2 ‐std=c++14 ‐static |
注意事项(请仔细阅读)
1. 文件名(程序名和输入输出文件名)必须使用英文小写。
2. C/C++ 中函数 main() 的返回值类型必须是 int,程序正常结束时的返回值必须 是 0。
3. 提交的程序代码文件的放置位置请参考各省的具体要求。
4. 因违反以上三点而出现的错误或问题,申诉时一律不予受理。
5. 若无特殊说明,结果的比较方式为全文比较(过滤行末空格及文末回车)。
6. 选手提交的程序源文件必须不大于 100KB。
7. 程序可使用的栈空间内存限制与题目的内存限制一致。
8. 全国统一评测时采用的机器配为: Intel(R) Core(TM)i78700K CPU @3.70GHz, 内 存 32GB。上述时限以此配置为准。
9. 只提供 Linux 格式附加样例文件。
10. 评测在当前最新公布的 NOI Linux 下进行,各语言的编译器版本以此为准。
小苹果(apple)
【题目描述】
小Y的桌子上放着n个苹果从左到右排成一列,编号为从1到n。
小苞是小Y的好朋友,每天她都会从中拿走一些苹果。
每天在拿的时候,小苞都是从左侧第1个苹果开始、每隔2个苹果拿走1个苹果。随后小苞会将剩 下的苹果按原先的顺序重新排成一列。
小苞想知道,多少天能拿完所有的苹果,而编号为n的苹果是在第几天被拿走的?
【输入格式】
从文件 apple.in 中读入数据。
输入的第一行包含一个正整数 n,表示苹果的总数。
【输出格式】
输出到文件 apple.out 中。
输出一行包含两个正整数,两个整数之间由一个空格隔开,分别表示小苞拿走所有苹果所需的 天数以及拿走编号为 n 的苹果是在第几天。
【样例 1 输入】
8
【样例 1 输出】
5 5
【样例 1 解释】
小苞的桌上一共放了 8 个苹果。
小苞第一天拿走了编号为 1、4、7 的苹果。
小苞第二天拿走了编号为 2、6 的苹果。
小苞第三天拿走了编号为 3 的苹果。
小苞第四天拿走了编号为 5 的苹果。
小苞第五天拿走了编号为 8 的苹果。
【样例 2】
见选手目录下的 apple/apple2.in 与 apple/apple2.ans。
【数据范围】
对于所有数据测试有:1 ≤ n ≤ 10⁹。
测试点 | n≤ | 特殊性质 |
1~2 | 10 | 无 |
3~5 | 10³ | 无 |
6~7 | 10⁶ | 有 |
8~9 | 10⁶ | 无 |
10 | 10⁹ | 无 |
特殊性质:小苞在第一天就取走编号为 n 的苹果。
AC代码
#include<bits/stdc++.h>
using namespace std;
long long n,cnt,p=-1;
int main()
{
// freopen("apple.in","r",stdin);
// freopen("apple.out","w",stdout);
scanf("%lld",&n);
while(n>0)
{
cnt++;
if(n%3==1 && p==-1)
{
p=cnt;
}
n-=(n-1)/3+1;
}
printf("%lld %lld",cnt,p);
return 0;
}
公路(road)
【题目描述】
小苞准备开着车沿着公路自驾。
公路上有 n 个站点,编号为从 1 到 n。其中站点 i 与 站点 i+1 的距离为 uᵢ 公里。
公路上每个站点都可以加油,编号为 i 的站点一升油的价格为 aᵢ 元,且每个站点只出售整数 升的油。
小苞想从站点 1 开车到站点 n,一开始小苞在站点 1 且车的油箱是空的。已知车的油箱足够 大,可以装下任意多的油,且每升油可以让车前进 d 公里。问小苞从站点 1 开到站点 n ,至 少要花多少钱加油?
【输入格式】
从文件road. in中读入数据。
输入的第一行包含两个正整数 n 和 d ,分别表示公路上站点的数量和车每升油可以
前进的距离。
输入的第二行包含 n - 1 个正整数 v₁,v₂···vₙ₋₁, 分别表示站点间的距离。分别表示站点间的 距离。
输入的第二行包含n个正整数 a₁,a₂······aₙ,分别表示在不同站点加油的价格。
【输出格式】
输出到文件 road.out 中。 输出一行,仅包含一个正整数,表示从站点 1 开到站点 n,小苞 至少要花多少钱加油。
【样例 1 输入】
5 4
10 10 10 10
9 8 9 6 5
【样例 1 输出】
79
【样例 1 解释】
最优方案下:小苞在站点 1 买了 3 升油,在站点 2 购买了 5 升油,在站点 4 购买 了 2 升 油。
【样例 2】
见选手目录下的 road/road2.in 与 road/road2.ans。
【数据范围】
对于所有测试数据保证:1 ≤ n ≤ 10⁵,1 ≤ d ≤ 10⁵,1 ≤ vᵢ ≤ 10⁵,1 ≤ aᵢ ≤ 10⁵。
测试点 | n ≤ | 特殊性质 |
1 ∼ 5 | 8 | 无 |
6 ~10 | 10³ | 无 |
11 ~ 13 | 10⁵ | A |
14 ~ 16 | 10⁵ | B |
17 ~ 20 | 10⁵ | 无 |
特殊性质 A:站点 1 的油价最低。
特殊性质 B:对于所有 1 ≤ i < n,vᵢ 为 d 的倍数。