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

HDU 5014Number Sequence

时间:2014-09-16 15:35:20      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   for   div   sp   log   

思路:

对于一个二进制100011;

尽量将填满:填成111111;

然后有一个很好算的方法

gets(n)表示二进制下N有多少位,N^X=(111111)2

X=111111^N;

其实答案可以直接 ANS=N*(N+1);找的规律;

#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <stack>
using namespace std;
typedef long long ll;

int n;
int num(int x)
{
    int k=0;
    while (x)
    {
        k++;
        x/=2;
    }
    return k;
}

int b[100003];
int a[100003];
int main()
{
    int n;
    while (scanf("%d",&n)!=EOF)
    {
        memset(b,0,sizeof(b));
        for (int i=n;i>=0;i--)
        if (!b[i]){
        int k=((1<<num(i))-1)^i;
        b[i]=k;
        b[k]=i;
        }
        
        printf("%I64d\n",(ll)(n+1)*n);
        for (int i=0;i<=n;i++) scanf("%d",&a[i]);
        for (int i=0;i<n;i++) printf("%d ",b[a[i]]);
        printf("%d\n",b[a[n]]);
    }
    return 0;
}

 

HDU 5014Number Sequence

标签:style   blog   color   io   os   for   div   sp   log   

原文地址:http://www.cnblogs.com/forgot93/p/3974879.html

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