zoukankan      html  css  js  c++  java
  • P1010 幂次方

    题目大意:

    这道题就是把一个数变成2的幂次方来表示。

    思路:

    我们可以用递归的方式,把这个数拆开,在处理每个小问题。

    代码:

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int n;
    void f(int n){
        int bs=0,mi=1;//bs表示当前运算的次数,mi表示当前的次方值 
        while(n!=0){ 
            mi=1;
            bs=0;//每次结束要更新 
            for(int j=0;j<20;j++){//寻找比N小的最大的次方值 
                mi*=2; 
                if(mi>n){//如果mi超过了n 
                    bs=j;//求出运算的次数 
                    break;//退出循环 
                }
            } 
            mi/=2;
            n-=mi;//n减去最大的次方值  
            if(bs==0)printf("2(0)");//如果N小于2
            if(bs==1)printf("2");//如果N小于4  
            if(bs>=2){//如果N大于等于4的话 
                printf("2(");
                f(bs);//继续调用递归函数,求出剩下的 
                printf(")");
            }
            if(n!=0){//如果N不为0,输出+号 
                printf("+");
            }
        }
    }
    int main(){
        scanf("%d",&n);//输入 
        f(n);//调用递归函数 
        return 0;
    }
  • 相关阅读:
    python redis
    Celery
    RabbitMQ
    python的文件锁操作
    cloud-init alibaba
    cloud-init tencent
    关于 python 的类
    jnija2模板渲染
    python multiprocessing
    学习html5的WebSocket连接
  • 原文地址:https://www.cnblogs.com/shanxx/p/12894718.html
Copyright © 2011-2022 走看看