2的幂次方表示题解

news/2024/11/29 21:37:45/

8758:2的幂次方表示

总时间限制:

1000ms

内存限制:

65536kB

描述

任何一个正整数都可以用2的幂次方表示。例如:

    137=27+23+20

同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:

    2(7)+2(3)+2(0)

进一步:7=22+2+20(21用2表示)

        3=2+20

所以最后137可表示为:

    2(2(2)+2+2(0))+2(2+2(0))+2(0)

又如:

    1315=210+28+25+2+1

所以1315最后可表示为:

    2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

输入

一个正整数n(n≤20000)。

输出

一行,符合约定的n的0,2表示(在表示中不能有空格)。

样例输入

137

样例输出

2(2(2)+2+2(0))+2(2+2(0))+2(0)

来源

NOIP1998复赛 普及组 第一题

 

 

题解:将一个大数拆分为若干个2的n次方的和,并且将次方和再拆分成若干个部分,这样很容易就可以想起递归算法。

       实际上问题大致分为两步:

1.    将数字分解为2的n次方

2.    将n再次分解为2的n次方(调用自身,如果n==2则结束printf(“2”);

如果n==1 则printf(“2(0)”);)

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
void work(int n)
{
if(n==1)//初始判断条件,如果n为1或2则直接输出 
{
printf("2(0)");
return;
}
else if(n==2)
{
printf("2");
return; 
} 
else
{
int j=1,i=0;//j每次乘2,如果大于了n就分解结束,i为当前次数 
do
{
j*=2;
if(j>n)
{
j/=2;
if(i==1)//这步非常重要,确定是否需要继续 2() 
printf("2");
else
{
printf("2(");
work(i);
printf(")");
}	
if(n-j!=0)//如果n分解之后还有剩余的数,那么继续分解 
{
printf("+");
work(n-j);
}
return;
}
else
i++;
}while(1);
}	
}
int main()
{
int n;
scanf("%d",&n);
work(n);
}


 


http://www.ppmy.cn/news/500592.html

相关文章

1170:计算2的N次方

1170&#xff1a;计算2的N次方 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 23064 通过数: 12225 【题目描述】 任意给定一个正整数N(N<100)&#xff0c;计算2的n次方的值。 【输入】 输入一个正整数N。 【输出】 输出2的N次方的值。 【输入样例】 5 【输…

计算2的n次方

描述&#xff1a; 任意给定一个正整数N(N<100)&#xff0c;计算2的n次方的值。 输入&#xff1a; 输入一个正整数N。 输出&#xff1a; 输出2的N次方的值。 样例输入&#xff1a; 5 样例输出&#xff1a; 32 核心思想&#xff1a; 计算2的n次方也是依次相乘2&#xff0c;大于…

判断一个数是否为2的次方幂

给定一个整数n&#xff0c;判断它是否为2的次方幂。 思路&#xff1a;2&#xff0c;4&#xff0c;8&#xff0c;16&#xff0c;32....都是2的n次幂 转换为二进制分别为&#xff1a; 10 100 1000 10000 100000 这些数减1后与自身进行按位与&#xff0c;如果结果为…

怎么判断数字n是否为2的x次方,即2的幂次呢,比如2,4,8,16,32

怎么判断数字n是否为2的x次方&#xff0c;即2的幂次呢&#xff1f;比如2,4,8,16,32 提示&#xff1a;一些位运算的技巧 文章目录 怎么判断数字n是否为2的x次方&#xff0c;即2的幂次呢&#xff1f;比如2,4,8,16,32[TOC](文章目录) 题目如果n & (n-1) 0&#xff0c;n就是2的…

OpenEuler系统下Qt开发遇到的一些问题及其解决办法

1.qdebug不输出&#xff1a; https://blog.csdn.net/qq_43166035/article/details/124085036 先通过下面的命令找到00deepin-dde-env&#xff0c;然后再按照上面的教程搞。 sudo find / -name *dde-env 2.程序的发布&#xff1a; https://blog.csdn.net/xiaobai_cpp/article/d…

《深度学习调优指南.系统性优化模型》中文版

向AI转型的程序员都关注了这个号&#x1f447;&#x1f447;&#x1f447; PDF获取地址: 关注微信公众号 datayx 然后回复 指南 即可获取。 提高模型性能的科学方法 机器学习开发的最终目标是最大化模型的效用。尽管不同应用场景的开发流程有所不同&#xff08;例如时间长度、…

Spring MVC框架步骤

目录 前言1. 配置开发环境2. 创建一个新的Maven项目3. 配置Web.xml文件4. 创建控制器类5. 创建视图6. 配置视图解析器7. 运行应用程序8. 测试应用程序 前言 Spring MVC是一种基于Java的Web应用程序开发框架&#xff0c;它可以帮助开发人员构建灵活、健壮和可扩展的Web应用程序…

Bootstrap 简介

文章目录 Bootstrap 简介什么是 Bootstrap&#xff1f;Bootstrap 包的内容Bootstrap 实例 Bootstrap 简介 什么是 Bootstrap&#xff1f; Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。 历史 Bootstrap 是由 Twi…