2020CSP复赛赛试题答案
优秀的拆分(power)
【题目描述】
般来说,一个正整数可以拆分成若干个正整数的和。例如,1=1,10=1+2+3+4等。对于正整数n的一种特定拆分,我们称它为“优秀的",当且仅当在这种拆分下,n被分解为了若干个丕同的2的正整数次幂。注意,一个数x能被表示成2的正整数次幂,当且仅当x能通过正整数个2相乘在一起得到。
例如,10=8+2=23+21是一个优秀的拆分。但是,7=4+2+1=2+21+20就不是一个优秀的拆分,因为1不是2的正整数次幂。现在,给定正整数n,你需要判断这个数的所有拆分中,是否存在优秀的拆分。若存在,请你给出具体的拆分方案。
【输入格式】
输入文件名为 power.in.
输入文件只有一行,一个正整数n,代表需要判断的数。
【输出格式】
输出文件名为power.out.
如果这个数的所有拆分中,存在优秀的拆分。那么,你需要从大到小输出这个拆分中的每一个数,相邻两个数之间用一个空格隔开。可以证明,在规定了拆分数字的顺序后,该拆分方案是唯一的。若不存在优秀的拆分,输出"-1"(不包含双引号)。
【样例1输入】
6
【样例1输出】
4 2
【样例1解释】
6=4+2=22+21是一个优秀的拆分。注意,6=2+2+2不是一个优秀的拆分,因为拆分成的3个数不满足每个数互不相同。
【样例2输入】
7
【样例2输出】
-1
【样例3】
见选手目录下的power/power3.in与power/power3.ans
【数据范围与提示】
对于20%的数据,n<=10.
对于另外20%的数据,保证n为奇数。
对于另外20%的数据,保证n为2的正整数次幂。
对于80%的数据,n<=1024.
对于100%的数据,1<=n<=1x10^7.
题目解析:
一个数本来就可以拆分成2的正整数次幂, 因为利用它的二进制即可得到。例如:6的二进制是 1 1 0,分别代表22,21,20
所以6可以看成22+21=4+2。对n进行二进制分解,然后倒序输出即可。参考程序:
#include <bits/stdc++.h>
using namespace std;
int main() {freopen("power.in", "r", stdin);freopen("power.out", "w", stdout);int n;cin >> n;if (n & 1)puts("-1");else {for (int i = 30; i >= 0; i--) {if (n >> i & 1) {printf("%d ", 1 << i);}}}return 0;
}
第二题 直播获奖(live)
【题目描述】
NO12130即将举行。为了增加观赏性,CCF决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为w%,即当前排名前w%的选手的最低成绩就是即时的分数线。
更具体地,若当前已评出了p个选手的成绩,则当前计划获奖人数为max(1,[p*w%]),其中w是获奖百分比,[x]表示对x向下取整max(x,y)表示x和y中较大的数。如有选手成绩相同,则所有成绩并列的选手都能获奖,因此实际获奖人数可能比计划中多。
作为评测组的技术人员,请你帮CCF写一个直播程序。
【输入格式】
输入文件名为live.in.
第1行两个正整数n,w,分别代表选手总数与获奖率。
第2行有n个非负整数,依次代表逐一评出的选手成绩。
【输出格式】
输出文件名为live.out.
只有一行,包含n个非负整数,依次代表选手成绩逐一评出后,即时的获奖分数线。相邻两个整数间用一个空格分隔。
【样例1输入】
10 60
200 300 400 500 600 600 0 300 200 100
【样例1输出】
200 300 400 400 400 500 400 400 300 300
【数据范围与提示】
对于20%的数据,n<=10
对于另外20%的数据,保证n为奇数。
对于另外20%的数据,保证n为2的正整数次幂。
对于80%的数据,n<=1024
对于100%的数据,1<=n<=10^7
【数据范围与提示】
测试点编号 n
1~3 =10
4~6 =500
7~10 =2000
11~17 =10000
18~20 =100000
对于所有测试点,每个选手的成绩均为不超过600的非负整数,获奖百分比w是一个正整数目1<=w<=99.
在计算计划获奖人数时,如用浮点类型的变量(如C/C++中的float double,Pascal中的real,double,extended等)存储获奖比例w%,则计算5x60%时的结果可能为3.000001,也可能为2.999999,向下取整后的结果不确定。因此,建议仅使用整型变量,以计算出准确值。
题目解析:
50分程序:对于每个选手,把之前的数据进行sort排序,选择max(1, ⌊
2020CSP复赛赛试题答案相关推荐
- 2016蓝桥杯b组java试题及答案_2016年第七届蓝桥杯java B组省赛试题
2016年第七届蓝桥杯java B组省赛试题 1-3.结果填空 4-5.代码填空 6-7.结果填空 8-10.程序设计 1.煤球数目 (结果填空) 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, ...
- 2015年蓝桥杯省赛B组C/C++(试题+答案分析)
2015年蓝桥杯省赛B组C/C++(试题+答案分析) 第一题 结果填空 (3分) 奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就觉得不吉利 ...
- 2016届蓝桥杯 Java C组 省赛试题及答案
在之前其实写了一篇2015年决赛的文章,但是发现每一条我感觉都要去翻阅别人的代码,这样子的效率太低了,所以赶紧开始做2016届的省赛题 结果填空 有奖猜谜 题目 小明很喜欢猜谜语. 最近,他被邀请参加 ...
- 高中计算机省赛试题,全国青少年信息学奥林匹克竞赛(高中组)初赛试题及答案...
全国青少年信息学奥林匹克竞赛(高中组)初赛试题及答案 NOI'95 "同创杯"全国青少年信息学(计算机)奥林匹克竞赛分区联赛初赛试题(高中组) 竞赛用时:2 小时一.基础题:执行 ...
- 第十四届蓝桥杯第一期模拟赛试题与题解 C++
第十四届蓝桥杯第一期模拟赛试题与题解 C++ 试题 A 题解:位运算 试题 B 题解:日历模拟 试题 C 题解:double 求和 试题 D 题解:枚举 试题 E 题解:二维前缀和 试题 F 题解:两 ...
- 49-2017年第八届蓝桥杯国赛试题及详解(Java本科B组)
蓝桥杯历年真题题目及题解目录汇总(推荐) 蓝桥杯算法模板常用套路及API等个人总结 ---------------------------------------------------------- ...
- NOIP 提高组 复赛 历年 试题
NOIP 提高组 复赛 历年 试题 NOIP 2017 提高组 复赛 试题 https://wenku.baidu.com/view/70de9e29854769eae009581b6bd97f ...
- 2022年Python技术类面试题总结(面试题+答案解析)
前言: 这是一位有着五年 Python 经验的好友最近对 Python 岗位面试后的一篇经验总结,从 Python 就业方向到 Python 面试题. Python 就业方向: 网络爬虫: 顾名思义, ...
- 2019第十届蓝桥杯c++A组省赛试题及个人解法
第十届蓝桥杯2019年C/C++ 大学A组省赛试题 2019年蓝桥杯第十届软件类省赛# C/C++ 大 学 A 组# 试题 A: 平方和#(暴力) 本题总分:5 分 [问题描述] 小明对数位中含有 2 ...
最新文章
- 财务 计算机网络,计算机网络技术在财务系统中的应用
- BM惊爆:EOS一周年工作KPI
- 疫情之下的科技普惠:阿里云科技驱动中小企业数字化
- python求n的阶乘_python求n的阶乘
- Python类私有方法的陷阱
- python编辑七段数码管引脚图_初识原理图
- linux命令行模式下实现代理上网 专题
- git 修改tag 备注_【Git】第十二章:Git高级实战技巧
- ROS indigo在Ubuntu上的安装教程
- DataSetProvider的Option属性
- PMP项目管理全套表格史上最全,建议收藏
- 利用sql循环语句实现基本的数据累加和阶乘
- 复化科特斯公式matlab_牛顿科特斯公式要点分析.ppt
- AXI总线学习-------从零开始详细学-------------连载(6)读写处理架构,burst介绍,burst细节定义(burst size burst length)
- 码蹄集 - MT2165 - 小码哥的抽卡之旅1
- java 新特性-TWR(Try-with-resources)
- com.sun.mail.smtp.protected void rcptTo() 方法
- 在线编辑excel文件实现服务器后台存储,及页面还原
- 上传文件资料并生成缩略图
- c# 溢出抛异常_C#捕获堆栈溢出异常