栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

XDOJ正数的最优分解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XDOJ正数的最优分解

1. 正整数的最优分解

描 述 : 任 意 一 个 自 然 数 都 可 以 分 解 成 若 干 个 2 的 幂 次 之 和 , 例 如 : 7=1+2+4=2 0 +2 1 +2 2 ,10=8+2=2 3 +2 1。这些分解中有唯一一个最优分解,既分解为若干 个不同的 2 的正整数次幂之和。所以,10=2 3 +2 1是一个最优分解,而 7=2 0 +2 1 +2 2不 是最优分解,因为 2 0不是 2 的正整数次幂。 输入一个正整数 n(n<220),如果存在最优分解,则按从大到小的顺序输出分解的 数字,若不存在最优分解则输出-1.

输入:输入一个正整数 n

输出:如果 n 存在最优分解,则在一行上按从大到小的顺序输出分解的数字,数 字之间用空格分隔;若不存在最优分解则输出-1.

输入样例:

样例 1: 10

样例 2: 7

输出样例:

样例 1: 8

2 样例

2:-1

刚开始看完这道题是非常蒙的,在草稿纸上算了算几个数,自己总结了一下规律,发现是偶数都有正数的最优分解,奇数都没有正数的最优分解(一定有2的零次幂)

所以接下来只需处理偶数的最优分解问题

感觉自己的思路不好用文字描述,就直接上代码吧~

#include
#include
int main(){
	int n,i;
	scanf("%d",&n);
	double convert=n*1.0;
	if(n%2==1){
		printf("-1");
	}
	else{
		i=0;
		do{
		i++;
		//printf("i=%d,pow(2,i)=%.0fn",i,pow(2,i));
		}while(pow(2,i) 

欢迎各位大佬点拨点拨本菜鸡~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/698195.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号