zoukankan      html  css  js  c++  java
  • noi2020第一题

    原题:https://www.luogu.com.cn/problem/P7071?contestId=37027

    满分代码①:二进制&&位运算(&)

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int n; 
     4 int main(){
     5     cin>>n;
     6     if(n&1)cout<<-1;
     7     else{
     8         for(int i=31;i>=1;i--){
     9             int sum=1<<i;  //1<<31代表二进制中个位上的2向左移31-1=30位,代表2的30次方
    10             if(n&sum)cout<<sum<<" ";
    11         }
    12     }
    13     return 0;
    14 } 

    其中,&不同于&&,它是求这个数二进制上是否有两个数同一位上全是1的情况,如:

    14 二进制:1110

    8  二进制:1000

    4  二进制:0100

    2  二进制:0010

    所以:

    14&8:1000——都是bool类型

    14&4:0100

    14&2:0010

    14&1:0000

    满分代码②:模拟

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int n,i=1; 
     4 int main(){
     5     cin>>n;
     6     if(n%2==1)cout<<-1;
     7     else{
     8         while(n){
     9             int sum=pow(2,i);
    10             if(sum>n){
    11                 cout<<sum/2<<" ";
    12                 n-=sum/2;
    13                 i=0;
    14             }
    15             i++;
    16         }
    17     }
    18     return 0;
    19 } 
  • 相关阅读:
    cJson
    STemWin
    TEA通讯加密
    stm32串口收发导致的死机
    C语言版数据结构算法
    FIFO
    IAP远程在线升级
    LWIP
    电能计量芯片
    单片机里的堆栈
  • 原文地址:https://www.cnblogs.com/TFLSc1908lzs/p/14017408.html
Copyright © 2011-2022 走看看