幂次方
  gBkHYLY8jvYd 2023年12月06日 11 0

[NOIP1998 普及组] 幂次方

题目描述

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

同时约定次方用括号来表示,即 幂次方_#include_02 可表示为 幂次方_数据_03

由此可知,幂次方_ios_04 可表示为 幂次方_ios_05

进一步:

幂次方_#include_06 ( 幂次方_#include_07幂次方_ios 表示),并且 幂次方_ios_09

所以最后 幂次方_ios_04 可表示为 幂次方_数据_11

又如 幂次方_#include_12

所以 幂次方_数据_13 最后可表示为 幂次方_#include_14

输入格式

一行一个正整数 幂次方_#include_15

输出格式

符合约定的 幂次方_#include_15幂次方_数据_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;
}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月06日 0

暂无评论

推荐阅读
  gBkHYLY8jvYd   2023年12月09日   8   0   0 cii++数据
  gBkHYLY8jvYd   2023年12月10日   9   0   0 #include邻域灰度图像
  gBkHYLY8jvYd   2023年12月10日   15   0   0 #include数组i++
  gBkHYLY8jvYd   2023年12月08日   12   0   0 #includecii++
gBkHYLY8jvYd
作者其他文章 更多

2023-12-12

2023-12-11

2023-12-10

2023-12-10

2023-12-09

2023-12-08

2023-12-06

2023-12-06

2023-12-06