zoukankan      html  css  js  c++  java
  • P1100 高低位交换

    大致题意:

    • 将n的二进制数求出后,前十六位与后十六位互换得到一个新的二进制数,并将它转换为十进制。

    基本思路:

    • 先求n的二进制,
    • 交换高低位,
    • 转十进制,
    • 输出。

    关于进制的相互转换可以看看我的 这一篇博客<<戳 ,里面有写。

    Code:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <map>
    #include <set>
    #include <list>
    using namespace std;
    #define R read()
    #define GC getchar()
    #define ll long long
    #define ull unsigned long long
    #define INF 0x7fffffff
    #define LLINF 0x7fffffffffffffff
    ll read(){
        ll s=0,f=1;
        char c=GC;
        while(c<'0'||c>'9'){if(c=='-')f=-f;c=GC;}
        while(c>='0'&&c<='9'){s=s*10+c-'0';c=GC;}
        return s*f;
    }
    ll n,m;//好像不用long long也没问题,我为了保险就打上了qwq
    ll t=1;
    ll tmp[100],tot;
    int main(){
        n=R;
        while(n){//10进制转2进制
            tmp[++tot]=n%2;
            n/=2;
        }
        for(int i=1,j=32;i<=16;++i,--j){//反过来,因为每次取模的数都应该从后往前放,但是并不知道要放多少个,所以就正着进来啦
            swap(tmp[i],tmp[j]);
        }
        for(int i=1,j=17;i<=16;++i,++j){//高低位交换
            swap(tmp[i],tmp[j]);
        }
        for(ll i=32;i>=1;--i){//2进制转10进制
            m+=tmp[i]*t;
            t*=2;
        }
        printf("%lld",m);
        return 0;
    }
    
  • 相关阅读:
    wustctf2020_name_your_dog
    wdb2018_guess(stack smash,__environ获取栈变量)
    ciscn_2019_en_3
    植物大战僵尸逆向(秒杀僵尸)
    pwnable_hacknote
    pwn-hitcontraining_magicheap(unsorted bin attack)
    pwn-[XMAN]level5(通用gadget,mprotect)
    pwn-pwnable_orw(seccomp&orw)
    《心流》有感
    LC112 路径总和
  • 原文地址:https://www.cnblogs.com/FUXyao/p/12848407.html
Copyright © 2011-2022 走看看