P7071 [CSP-J2020] 优秀的拆分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
解题思路(1)二进制
1.首先从题目可知奇数是只有2的0次幂,是不符合题意的,所以,只有偶数才存在优秀的拆分
那如果是奇数,直接输出-1结束程序即可
3.如果是偶数的话,那么我们将他转化为二进制,如果此时的余数是1的话,代表这个数位是2的n次方,将这个数存入数组
4.最后倒序输出
代码如下:
P7071 [CSP-J2020] 优秀的拆分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<bits/stdc++.h>
using namespace std;
int a[1000000];//10的7次方
int main()
{
int n,num=0,sum=0;//n为要判断的数,num为存数组的位置,sum为2的次方数
cin>>n;//输入n
if(n%2==1)//判断是不是奇数,如果是,直接输出"-1"
{
cout<<-1;

该博客介绍了如何解决CSP-J2020中的‘优秀的拆分’问题。对于输入的整数,只有偶数存在优秀拆分,奇数则返回-1。对于偶数,博主提供了两种解题思路:一是通过将其转换为二进制,当二进制表示中某位为1时,表示2的n次方并存入数组,最后倒序输出;二是预先创建一个包含2的n次方的表,直接输出符合条件的项。
3525

被折叠的 条评论
为什么被折叠?



