HDU5014:Number Sequence

來源:互聯網
上載者:User

標籤:hdu

Problem DescriptionThere is a special number sequence which has n+1 integers. For each number in sequence, we have two rules:

● ai ∈ [0,n] 
● ai ≠ aj( i ≠ j )

For sequence a and sequence b, the integrating degree t is defined as follows(“⊕” denotes exclusive or):

t = (a0 ⊕ b0) + (a1 ⊕ b1) +···+ (an ⊕ bn)

(sequence B should also satisfy the rules described above)

Now give you a number n and the sequence a. You should calculate the maximum integrating degree t and print the sequence b.
 
InputThere are multiple test cases. Please process till EOF. 

For each case, the first line contains an integer n(1 ≤ n ≤ 105), The second line contains a0,a1,a2,...,an.
 
OutputFor each case, output two lines.The first line contains the maximum integrating degree t. The second line contains n+1 integers b0,b1,b2,...,bn. There is exactly one space between bi and bi+1(0 ≤ i ≤ n - 1). Don’t ouput any spaces after bn.
 
Sample Input
42 0 1 4 3
 
Sample Output
201 0 2 3 4盡量錯開對應位置的0,1即可,就是說將對應位的二進位按位取反了,當然不能用~符號
#include <stdio.h>#include <string.h>#include <math.h>#include <queue>#include <stack>#include <map>#include <algorithm>using namespace std;#define ll __int64#define up(i,x,y) for(i=x;i<=y;i++)#define up2(i,x,y) for(i=x;y;i++)#define down(i,x,y) for(i=x;i>=y;i--)#define down2(i,x,y) for(i=x;y;i--)#define mem(a,b) memset(a,b,sizeof(a))#define s(a) scanf("%d",&a)#define s64(a) scanf("%I64d",&a)#define w(a) while(a)int n,a[100005],i,hash[100005];int main(){    w(~s(n))    {        up(i,0,n)        s(a[i]);        printf("%I64d\n",(ll)n*n+n);        mem(hash,-1);        down(i,n,0)        {            if(hash[i]>=0) continue;            int num=0,s=1,t=i;            w(t)            {                int tem=((t&1)^1);                num=num+s*tem;                s*=2;                t=t/2;            }            hash[num]=i;            hash[i]=num;        }        printf("%d",hash[a[0]]);        up(i,1,n)        printf(" %d",hash[a[i]]);        printf("\n");    }    return 0;}


HDU5014:Number Sequence

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.