首页 > 其他分享 >幂次方

幂次方

时间:2023-12-04 19:32:43浏览次数:24  
标签:表示 int 样例 次方 fff include

[NOIP1998 普及组] 幂次方

题目描述

任何一个正整数都可以用 幂次方_#include 的幂次方表示。例如 $137=27+23+2^0 $。

同时约定次方用括号来表示,即 幂次方_ios_02 可表示为 幂次方_#include_03

由此可知,幂次方_ios_04 可表示为 幂次方_数据_05

进一步:

幂次方_ios_06 ( 幂次方_数据_07幂次方_#include 表示),并且 幂次方_#include_09

所以最后 幂次方_ios_04 可表示为 幂次方_ios_11

又如 幂次方_数据_12

所以 幂次方_ios_13 最后可表示为 幂次方_ios_14

输入格式

一行一个正整数 幂次方_数据_15

输出格式

符合约定的 幂次方_数据_15幂次方_#include_17 表示(在表示中不能有空格)。

样例 #1

样例输入 #1

1315

样例输出 #1

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

提示

【数据范围】

对于 幂次方_#include_18 的数据,幂次方_#include_19

NOIP1998 普及组 第三题




#include<iostream>
#include<cmath>
using namespace std;
int a;
void fff(int x)
{
    for(int i=14;i>=0;i--) //两万的数据最多是2(14)
    {
        if(pow(2,i)<=x){
        //pow(n,m)在cmath库中,返回n^m;枚举出第一个幂次方
            if(i==1) cout<<"2"; //2(1)不用再往后分解了且2^1输出为2,单独出来
            else if(i==0) cout<<"2(0)"; //2(0)也不用再往后分解了,单独出来
            else{ //若i>1则继续分解指数i
                cout<<"2(";
            fff(i);
            cout<<")";
            }
            x-=pow(2,i); //继续循环分解余下的
            if(x!=0) cout<<"+";
            //加号处理的最简单方法:若此x还没分解完,则后面还有项,所以输出一个+号
        }
    }
}
int main()
{
    cin>>a;
    fff(a);
    return 0;
}


标签:表示,int,样例,次方,fff,include
From: https://blog.51cto.com/u_16003019/8680889

相关文章

  • 用零点存在定理看二次方程根的分布
    前言以前写过一篇关于二次方程根的分布问题的博文,感觉思路混乱,也不想再修改,故重新开一篇博文探讨这个问题,初次尝试用零点存在定理来分析二次方程根的分布,自编题目,有待商榷,希望多提宝贵意见。典例分析为了降低思维的难度,我们首先看这个比较特殊的例子,已知函数\(f(x)=-x^2+2x+......
  • P1679 神奇的四次方数
    一个数可以被无限次的选,所以是完全背包,然后预处理一下就好啦#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;intf[N];intmain(){ memset(f,0x3f,sizeoff); f[0]=0; intn; cin>>n; for(inti=1;i<=20;i++){ intx=i*i*i*i; for(intj=x;j<=n;......
  • HashMap的长度是2的幂次方
    为了能让HashMap存取高效,尽量减少碰撞,也就是要尽量把数据分配均匀。Hash值的范围值-2147483648到2147483647,前后加起来大概40亿的映射长度,只要哈希函数映射的比较均匀松散,一般应用是很难出现碰撞的。但问题是一个40亿长度的数组,内存是放不下的。所以这个散列值是不能直接拿来用的。......
  • 一元二次方程求根公式推导和运用
    一元二次方程:只有一个未知数,且未知数的最高次数为2一元二次方程的一般形式:<svgxmlns="http://www.w3.org/2000/svg"width="2.207ex"height="2.025ex"viewBox="0-883.9975.6894.9"xmlns:xlink="http://www.w3.org/1999/xlink"aria-hidden=&qu......
  • HashMap 的长度为什么是 2 的 N 次方?HashMap 与 ConcurrentHashMap 的异同
    一、HashMap的长度为什么是2的N次方为了能让HashMap存数据和取数据的效率高,尽可能地减少hash值碰撞,也就是说尽量把数据能平均分配,每个链表或者红黑树长度尽量相等。取余(%)操作中,如果除数是2的幂次,则等价于与其除数减一的与(&)操作。即:hash%length==hash&(length-1),这个等式成......
  • 求一元二次方程的根
    #include<stdio.h>#include<math.h>intmain(){inta,b,c;scanf("%d%d%d",&a,&b,&c);intd=pow(b,2)-4*a*c;//pow是开根号,要引用math头文件if(d>=0){ intx1; intx2; intx; if(d==0) { x=-b/2*a; pri......
  • P1024 [NOIP2001 提高组] 一元三次方程求解
    因为精度要求很低,所以有一个暴力的想法就是枚举区间内相差很小的两个数然后判断。保留两位小数后记得判重。考虑优化。发现根与根差的绝对值大于等于\(1\)这个条件没有利用。有了这个条件我们发现相邻两个整数之间(不包含端点)最多有一个根。于是可以先判掉整数然后在区间内有根......
  • CN0+CN1+CN2+…+CNN = 2的N次方 如何理解?
    关于标题所示的经典公式的理解数学角度讲是二项式定理,证明过程不记得了但是这个回答里看到一个非常有意思的思路,从程序员角度比较好接受参考链接知乎:CN0+CN1+CN2+…+CNN如何得出等于2的N次方?PS疑问来源:《算法图解:第8章贪婪算法》8.3集合覆盖问题一节中提到,要找出覆盖......
  • 剑指 Offer 16. 数值的整数次方
    根本思想就是二进制能够表示任意类型的数。classSolution{public:doublemyPow(doublex,intn){//为了防止判断n为负数取反时造成溢出//用longlong类型接收longlongN=n;//记录N是否是负数intflag=0;......
  • 大厂算法题每日总结(num最近的,2的某次方)
    //给定一个非负整数num,不用循环,返回>=num,并离num最近的,2的某次方publicstaticfinalinttableSizeFor(intn){n--;n|=n>>>1;//>>>不带符号右移n|=n>>>2;n|=n>>>4;n|=n>>>8;n|=n>>>16;//打满,至此int32位,全打满return(n<0......