优秀的拆分(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
#include
#include
using namespace std;
int n;
int main()
{
cin >> n;
if (n % 2 == 1) {
cout << -1;
return 0;
}
int a[30], cnt = 0;
int base = 1;
while (n) {
if (n % 2 == 1) {
a[++cnt] = base;
}
n /= 2;
base *= 2;
}
for (int i = cnt; i >= 1; i --) {
cout << a[i] << " ";
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
零一点评:
本题难度显著高于2019,2018,2017年的第一题。没有联想到二进制转化的同学可能会被卡住。一旦联想到,就是一个【入门】级题目。

骗分方法:
第一个20%:对每个n,打表
第二个20%:根据题意,不存在,直接输出-1
第三个20%:它的拆分就是它本身,直接输出n本身
【数据范围与提示】
对于20%的数据,n<=10.
对于另外20%的数据,保证n为奇数。
对于另外20%的数据,保证n为2的正整数次幂。
对于80%的数据,n<=1024.
对于100%的数据,1<=n<=1x10^7.

第二题 直播获奖(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, ⌊

2020年csp-j入门级复赛真题,题解,程序相关推荐

  1. 2020年下半年软件设计师下午真题试题(案例分析)及答案

    2020年下半年软件设计师上午真题及答案解析 目录 1.工厂智能缺陷检测系统的数据流图 2.M集团业务管理需求的数据库设计 3.房产信息管理系统的用例图 4.希尔排序算法 5.在线支付(Java) 1 ...

  2. 2020年11月软件设计师真题透析

    2020年下半年软件设计师上午真题及答案解析 1.在程序执行过程中,高速缓存(Cache)  与主存间的地址映射由(   ). A. 操作系统进行管理 B. 操作系统进行管理 C.    程序员自行安 ...

  3. 2020年系统集成项目管理工程师下午真题

    2020年系统集成项目管理工程师下午真题 试题一(18分) 阅读下列说明,回答问题1到问题3,将解答填入答题纸的对应栏内. 某公司刚承接了某市政府的办公系统集成项目,急需-名质量管理人员.因公司有类似 ...

  4. 2020年系统集成项目管理工程师上午真题及答案解析

    2020年系统集成项目管理工程师上午真题及答案解析 1.信息系统的()是指系统可能存在着丧失结构.功能.秩序的特性. A可用性 B.开放性 C脆弱性 D.稳定性 [参考答案] C 2.()可以将计算机 ...

  5. 2019年字节跳动2020届秋招在线笔试真题(后端开发工程师)

    2019年字节跳动2020届秋招在线笔试真题(后端开发工程师) 第一题 第二题 第三题 第四题 第一题 第二题 第三题 第四题 字节跳动的题,对于我这个菜鸟来说确实很难,对一半都做不到.还得继续努力啊 ...

  6. 历届CSP真题题解-CSP刷真题之路

    历届CSP真题题解-CSP刷真题之路(持续更新中...) 2020-12 2020-09 2020-06 2019-12 2020-12 题目编号 题解链接 CSP202012-1 期末预测之安全指数 ...

  7. 2020年下半年网络规划设计师上午真题及答案解析

    2020年下半年网络规划设计师上午真题及答案解析 1.在支持多线程的操作系统中,假设进程P创建了线程T1,T2,T3,那么下列说法中正确的是(  ). A.该进程中已打开的文件是不能被T1,T2和T3 ...

  8. 视频教程-2020软考软件设计师-上午真题解析视频课程-软考

    2020软考软件设计师-上午真题解析视频课程 河北师范大学软件学院优秀讲师,项目经理资质,担任操作系统原理.软件工程.项目管理等课程教学工作.参与十个以上百万级软件项目管理及系统设计工作.在<计 ...

  9. 2020下半年信息系统监理师上午真题及答案

    2020下半年信息系统监理师上午真题及答案 1.(1)是指以信息技术为主要手段建立的信息采集.存储.处理的系统. A.信息资源系统 B.信息网络系统 C.信息应用系统 D.信息存储系统 参考答案:B ...

最新文章

  1. AngularJS开发指南4:指令的详解
  2. c调用c++ qt_【C/C++】qt库结构及示例
  3. 使用python的openpyxl模块操作excel
  4. python图标icon_用Python提取exe图标icon
  5. windows文件路径大于MAX_PATH
  6. 数据库(表)导入导出备份
  7. [电脑问题解决]在windows 8.1升级后,电脑重启时不显示ubuntu的系统引导界面,而总是直接进入windows
  8. MongoDB CookBook读书笔记之导入导出
  9. Android 录音获取分贝值的办法
  10. javascript基础知识-数组
  11. php生成静态页面的方法,php生成静态页面的办法
  12. Atitit prj tek dfkt 项目常见技术难点目录第一章 开发效率 2第一节 更加简单的语言 2第二节 简单
  13. 这些免费版音视频格式转换器哪个最好用
  14. 计算机内存清理原理,怎样清理计算机内存
  15. 蓝牙耳机无法与计算机连接,蓝牙耳机怎么连接电脑【图文教程】
  16. postgresql 优势
  17. WIN10如何设置默认便签应用
  18. C++STL之<set>和<map>
  19. 测试用例经典设计方法之 因果图法
  20. Java中被final修饰的变量的几种赋值方式

热门文章

  1. 项目-Twitter WeRateDogs评分分析
  2. 刷新居家饮品体验,Onecup与奈雪的茶合作拓宽新战场
  3. elementUI From表单校验,整体校验和部分校验的使用方法
  4. 杭州内推 | 网易互娱AI Lab招聘NLP/数据挖掘/图像算法实习生
  5. Arduino使用HM-10蓝牙模块向uniapp小程序推送数据采坑总结
  6. 这款实现 C++、Java、Python 代码互译的工具,很强!
  7. php五秒盾,typecho引入php五秒盾,实现自由配置
  8. Java 第十一章总结 枚举与泛型
  9. 网页特效怎么插HTML代码中,入门:如何把网页特效代码加到自己的网页中?
  10. SpringBoot更换网页小图标favicon.ioc