码迷,mamicode.com
首页 > 其他好文 > 详细

H - Hamiltonian Hypercube Gym - 101170H

时间:2019-10-07 00:28:15      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:code   void   就是   for   bit   逆序   ret   end   out   

规律题

首先我们要知道他的顺序是怎么来的,首先当n等于1时,是0,1 当n=2时,先按照与按顺序在他们前面分别加0,即00,01,在逆序加1,即11,10 构成的顺序为00,01,11,10;往后同理

规律,顺序排好后,对某个字符,我们对前n项求异或 即arr[i]^=arr[i-1],就可以将其转换为对应的二进制形式,值得注意的地方就是要用ll,还有就是二进制转换为10进制的过程

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll bit1[100];
ll bit2[100];
void solve(){
    int n;
    cin>>n; 
    ll m=1ll*1<<n;
    string s1,s2;
    cin>>s1>>s2;
    ll l=0,r=0;
    for(int i=1;i<=n;i++){
        m>>=1;
        bit1[i]=s1[i-1]-0;
        bit1[i]^=bit1[i-1];
        l+=bit1[i]*m;
    }
    m=1ll*1<<n;
    for(int i=1;i<=n;i++){
        m>>=1;
        bit2[i]=s2[i-1]-0;
        bit2[i]^=bit2[i-1];
        r+=bit2[i]*m;
    }
    cout<<r-l-1<<endl;
}
int main(){
    solve();
    return 0;
}

 

H - Hamiltonian Hypercube Gym - 101170H

标签:code   void   就是   for   bit   逆序   ret   end   out   

原文地址:https://www.cnblogs.com/Accepting/p/11628965.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!