标签:
《ACM程序设计》短学期考试_软件工程及其他专业
题目大意:给你一个N,求N位的全部二进制数中的所有1有多少个。
思路:考虑3和4。N为的全部二进制数总共有x = 2^(N-1)个。第1竖列总共有x个1,
之后的第2~N竖列总共有x/2个1。所以结果ans = x + (N-1)*x/2。参考讨论区。
N = 3: N = 4:
100 1000
101 1001
110 1010
111 1011
1100
1101
1110
1111
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; int main() { int x,N,T; cin >> T; while(T--) { cin >> N; x = 1; for(int i = 1; i < N; ++i) x *= 2; int sum = x + (N-1)*x/2; cout << sum << endl; } return 0; }
标签:
原文地址:http://blog.csdn.net/lianai911/article/details/43340759