摘要:
组合数学!!!详情见:http://hi.baidu.com/lxyzmnwvhokptur/item/18c806469a668fe31e19bc1a#0 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 5000011 using namespace std;12 char a[10];13 int C(int n,int m){14 int sum =1;15 ... 阅读全文
摘要:
题解:使用排列组合的知识解决!!!主要求1-n之间的Round Numbers,然后减下就可以了,现在主要就是怎样求n以内的Round Numbers数。分2部分求:1.计算出n的2进制位数为m,这1-(m-1)之间的数可以很快求出,当为偶数2k的时候:C(2k-1,k)+C(2k-1,k+1)+……+C(2k-1,2k-1)=2^(2k-2);当为奇数2k+1的时候:C(2k,k+1)+C(2k,k+2)+……+C(2k,2k)=2^(2k-1)-1/2*C(2k,k);2.再就是求m个2进制位时的Round Numbers数。由于第一个数一定是1所以不变然后继续向低位扫描,并计数0的个数, 阅读全文