大一寒假訓練四(位運算 二進位制列舉) 更新完成

2021-09-08 05:48:59 字數 2240 閱讀 5128

思路就是把所有字串的每個字元依次異或,字元對應得ascii碼也是乙個數字,所以字元也可以去異或。

而且在二進位制中,0與任何數異或都等於那個數本身。

#include

using namespace std;

int n,i,j,cas;

string x,ans;

intmain()

printf

("scenario #%d\n"

,++cas)

;printf

("%s\n\n"

,ans.

c_str()

);}return0;

}

#include

using namespace std;

intmain()

printf

("%d\n"

,ans);}

return0;

}

這題要多組輸入,單組輸入會wrong answer。

#include

using namespace std;

int i,j,n,k,s,a[21]

;int

main()

if(s==k)}if

(flag==0)

printf

("no\n");

}return0;

}

剛開始做可能覺得有點難,其實只要把概率的計算寫清楚就不難了。

#include

using namespace std;

int t,n,x,i,j,cnt;

double a[15]

,b[15

],c[15]

,ac[15]

,wa[15]

,ans,p;

//ac[i]表示團隊做對第i題的概率,wa[i]表示團隊做錯第i題的概率

intmain()

//cnt記錄團隊ac數量

else

p=p*wa[j];}

if(cnt==x)

ans=ans+p;

}printf

("%.4lf\n"

,ans);}

return0;

}

#include

using namespace std;

intmain()

else}if

(k1==

5&&k2==

10&&tmp==

0)ans++;}

printf

("%d\n"

,ans)

;return0;

}

#include

using namespace std;

int i,j,n,k,s,ans,a[21]

;int

main()

if(s==k)

ans++;}

printf

("%d\n"

,ans);}

return0;

}

先選出任意個小團體,選出來後做好標記(flag=1),並保證他們的票數之和小於等於總票數的一半,之後在沒被選出來的小團體(flag=0)中再選出任意乙個小團體,設他的票數為a[j],若加上a[j]後票數之和大於總票數的一半,那麼這個a[j]就是「關鍵加入者」,則他的權利指數+1。

#include

using namespace std;

int n,t,i,j,s,tmp,a[21]

,ans[21]

,flag[21]

;int

main()

memset

(ans,0,

sizeof

(ans));

for(i=

0;i<(1

<;i++)}

if(tmp<=s/2)

}}for(i=

0;i<=n-

2;i++

)printf

("%d "

,ans[i]);

printf

("%d\n"

,ans[n-1]

);}return0;

}

二進位制位運算

與運算,6 3 2 或運算 6 3 7 異或運算 6 3 5 反碼 6 7 左移 3 2 12 3 2 2 12 右移 3 1 1 3 2 1 無符號右移 3 1 1 3 2 1 按位與,當兩位同時為1時才為1如 1 1 1 1 0 0 0 1 0 6 3相當於 0110 0011 0010 2 按...

二進位制位運算

一 按位與 位全為1,結果才為1 0 0 0 0 1 0 1 0 0 1 1 1 特殊用法 清零。如果想將乙個單元清零,就是使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零 取乙個數中的指定位。如x 10101110要取x的低4位,用x 00001111 00001110即可 二 按...

位運算 顛倒二進位制位

a代表某字串 a b 異或 相同為0,不同為1 若b是一串0,則a b a,a b 0 a a 0 若b是一串1,則a b a,相當於把a取反,a b a a a a 利用x x 0,可以將三個數中重複的兩個數去掉 n 相當於無符號右移,左邊會補上0 獲取11111111,只需要把0取反 得到倒數第...