思路就是把所有字串的每個字元依次異或,字元對應得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取反 得到倒數第...