P1010 幂次方

这个题看起来十分的复杂,不过读完题就发现这题其实就是个递归(虽然我递归这块学的不好( ̄▽ ̄)")

这题就是把一个数分成二的几次方的和,然后余数和比它小的最大的二的次方数,如果不是二的一次方或者二的零次方,就要接着递归。

感觉写起来会很复杂啊。

直接上代码吧:

#include<iostream>
#include<cmath>
using namespace std;
int n;
void dg(int x)
{
    for(int i=14;i>=0;i--)
    {
        if(pow(2,i)<=x)
        {
            if(i==1)//这样就说明n是2或者3,就不需要输出括号了
            {
                cout<<"2";
            }
            else if(i==0)
            {
                cout<<"2(0)";//这样就说明n是1    
            }
            else
            {
                cout<<"2(";
                   dg(i);
                cout<<")";
            }
            x-=pow(2,i);//取余
            if(x!=0)//有余数时就输出+号
            {
                cout<<"+";
            }
        }
    }
}
int main()
{
    cin>>n;
    dg(n);
    return 0;
}

愉快的过了这题O(∩_∩)O

posted @ 2020-05-15 18:21  zjy123  阅读(164)  评论(0编辑  收藏  举报
//需要jquery插件 /* 鼠标特效 */ var a_idx = 0; jQuery(document).ready(function($) { $("body").click(function(e) { var a = new Array("(❤ ω ❤)","(☆▽☆)","(●'◡'●)","(✿◡‿◡)","(*^_^*)","O(∩_∩)O","( •̀ ω •́ )✧","(o゚v゚)ノ","(~ ̄▽ ̄)~","((≧∇≦)ノ","φ(゜▽゜*)♪","U•ェ•*U"); var $i = $("").text(a[a_idx]); a_idx = (a_idx + 1) % a.length; var x = e.pageX, y = e.pageY; $i.css({ "z-index": 999999999999999999999999999999999999999999999999999999999999999999999, "top": y - 20, "left": x, "position": "absolute", "font-weight": "bold", "color": "rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")" }); $("body").append($i); $i.animate({ "top": y - 180, "opacity": 0 }, 1500, function() { $i.remove(); }); }); });