top1编程
← 返回题目
题解

【基础】二进制折半交换

1 条题解

  • 0
    @ 2026-7-29 0:19:11
    #include<bits/stdc++.h>
    using namespace std;
    string s,c;
    long long p=1,o=0;
    int main(){
    	long long n;
    	cin>>n;
    	while(n!=0){
    		s=char('0'+n%2)+s;
    		n=n/2;
    	}
    	if(s=="")s="0";
    	if(s.size()<32){
    		for(int l=s.size(); l<32; l++)s='0'+s;
    	}
    	c=s.substr(0,16);
    	c=s.substr(16,16)+c;
    	for(int l=c.size()-1; l>=0; l--){
    		o=o+(c[l]-'0')*p;
    		p=p*2;
    	}
    	cout<<o;
    }
    
    • 1