CCF 20200307模拟赛


这个周末

我在家闲来无事

便去参加了

CCF20200307模拟赛

普及

省选的题目

还是有一定的难度的

共有三题

只讲两题

第一题:
【题目描述】

小明的班上共有 n 元班费,同学们准备使用班费集体购买 3 种物品:

  1. 圆规,每个 7 元。
  2. 笔,每支 4 元。
  3. 笔记本,每本 3 元。

小明负责订购文具,设圆规,笔,笔记本的订购数量分别为 a,b,c,他订购的原则依次如下:

  1. n 元钱必须正好用光,即 7a+4b+3c=n。
  2. 在满足以上条件情况下,成套的数量尽可能大,即 a,b,c 中的最小值尽可能大。
  3. 在满足以上条件情况下,物品的总数尽可能大,即 a+b+c 尽可能大。

请你帮助小明求出满足条件的最优方案。可以证明若存在方案,则最优方案唯一。

【输入格式】

从文件 order.in 中读入数据。

仅一行一个整数 n 表示班费数量。

【输出格式】

输出到文件 order.out 中。

若方案不存在则输出 -1。否则输出一行三个用空格分隔的非负整数 a,b,c 表示答案。

【样例1输入】
1
【样例1输出】
-1
【样例2输入】
14
【样例2输出】
1 1 1
【样例3输入】
33
【样例3输出】
1 2 6
【样例3解释】

a=2,b=4,c=1 也是满足条件 1,2 的方案,但对于条件 3,该方案只买了 7 个物品,不如 a=1,b=2,c=6 的方案。

【数据范围与提示】

对于测试点 1 ~ 6:n ≤ 14。
对于测试点 7 ~ 12:n 是 14 的倍数。
对于测试点 13 ~ 18:n ≤ 100。
对于所有测试点:0 ≤ n ≤ 105。

【时间限制】

1.0s

【空间限制】

256MB

【上传文件】

上传c, cpp或pas语言源程序,文件名应依次为order.c, order.cpp, order.pas。

解析:

这道题

不用多说

枚举就好

难度并不高

但是有一个优先级

三个条件必须

以此满足

优先级是很重要的

第二题:
【题目描述】

小 H 是一个热爱运动的孩子,某天他想给自己制定一个跑步计划。小 H 计划跑 n 米,其中第 i(i ≥ 1) 分钟要跑 xi 米(xi 是正整数),但没有确定好总时长。由于随着跑步时间增加,小 H 会越来越累,所以小 H 的计划必须满足对于任意 i(i>1) 有 xi ≤ xi-1。

现在小 H 想知道一共有多少个不同的满足条件的计划,请你帮助他。两个计划不同当且仅当跑步的总时长不同,或者存在一个 i,使得两个计划中 xi 不相同。

由于最后的答案可能很大,你只需要求出答案对 p 取模的结果。

【输入格式】

从文件 running.in 中读入数据。

仅一行两个整数 n,p 表示跑步距离与模数。

【输出格式】

输出到文件 running.out 中。

仅一行一个整数,表示答案模 109 + 7 的值。

【样例1输入】
4 44
【样例1输出】
5
【样例1解释】

五个不同的计划分别是:{1,1,1,1},{2,1,1},{3,1},{2,2},{4}。

【样例2输入】
66 666666
【样例2输出】
323522
【样例3输入】
66666 66666666
【样例3输出】
45183149
【数据范围与提示】

对于所有测试点:1 ≤ n ≤ 105, 1 ≤ p < 230。

每个测试点限制具体如下:

测试点编号 n ≤
1 5
2 10
3 50
4 100
5 500
6 2000
7 5000
8 20000
9 50000
10 100000

【时间限制】

2.0s

【空间限制】

256MB

【上传文件】

上传c, cpp或pas语言源程序,文件名应依次为running.c, running.cpp, running.pas。

解析:

这道题

其实就是搜索与回溯的一道

经典题目

拆分数字

不懂的人建议重学

这个只用来计数

所以更加简单了

还有为了

不重复

所以后面的

必须大于或等于前面的

否则的话

会有很多重复的

还有一个重点就是

他自己也要算一个

否则的话就少一个

最后还有一个比较重要的

答案要取余m

否则

就等着全错吧

请大家注意!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值