杭电 bestcoder#18 Bits Problem
来源:互联网 发布:java log4j使用 编辑:程序博客网 时间:2024/06/03 04:27
Problem Description
If the quantity of '1' in a number's binary digits is n, we call this number a n-onebit number. For instance, 8(1000) is a 1-onebit number, and 5(101) is a 2-onebit number. Now give you a number - n, please figure out the sum of n-onebit number belong to [0, R).
Input
Multiple test cases(less than 65). For each test case, there will only 1 line contains a non-negative integer n and a positive integer R(n≤1000,0<R<21000) , R is represented by binary digits, the data guarantee that there is no leading zeros.
Output
For each test case, print the answer module 1000000007 in one line.
Sample Input
1 1000
Sample Output
7
Source
BestCoder Round #18
比如13,1101,假设要求含3个1的个数,就等于紫色区域3个1的个数加上绿色区域2个1的个数加上紫色区域1个1的个数,如果这条路径本身满足则还要加1。
先初始化,用f[i][j]表示高度为i的完全二叉树的数中二进制恰好有j个1的数的个数,则有f[i][j]=f[i-1][j]+f[i-1][j-1]。
然后从31位循环到第1位(如果此时路径上的1已经超过要求就退出循环),用k表示目前已经路径上已经有几个1。如果这一位是1,就k++,并且把这一位变成0。如果下一位是1,就需要加上以这一位为根的左子树上满足k-K(K是题目要求的1)个1的个数。
这个题求得是所有数的和,如果当前位是1则要把跟他平级的左子树的所有情况的值都加上。
- #include<iostream>
- #include<cstdio>
- #include<string>
- #include<cstring>
- #include<vector>
- #include<cmath>
- #include<queue>
- #include<stack>
- #include<map>
- #include<set>
- #include<algorithm>
- using namespace std;
- typedef long long LL;
- const int maxn=1010;
- const int MOD=1000000007;
- LL C[maxn][maxn],W[maxn];
- int N;
- char s[maxn];
- void init()
- {
- memset(C,0,sizeof(C));
- C[0][0]=C[1][0]=C[1][1]=1;
- for(int i=2;i<maxn;i++)
- {
- C[i][0]=C[i][i]=1;
- for(int j=1;j<i;j++)
- C[i][j]=(C[i-1][j]+C[i-1][j-1])%MOD;
- }
- W[0]=1;
- for(int i=1;i<maxn;i++)
- W[i]=(W[i-1]*2)%MOD;
- }
- LL f(int len,int cnt)
- {
- LL ans=0;
- if(len>=1&&cnt>=1)ans=(W[len]-1)*C[len-1][cn
0 0
- 杭电 bestcoder#18 Bits Problem
- 【杭电5804】bestcoder
- 杭电Problem-2717
- BestCoder Round #18 1001 primes problem
- BestCoder Round #18 1002 Math Problem 题解
- 【枚举】HDU5104Primes Problem【BestCoder Round #18】
- 杭电5858 (Hard problem) 杭电5867(Water problem)
- 杭电acm1001 Sum Problem
- 杭电1001 Sum Problem
- 杭电 Prime Ring Problem
- 杭电3549-Flow Problem
- 杭电 1001 Sum Problem
- 杭电Train Problem I
- 杭电1001 - Sum Problem
- 杭电1001 Sum Problem
- 杭电P1001 Sum Problem
- 杭电ACM1000A + B Problem
- 杭电1001-Sum Problem
- 设计模式分类
- Binary Tree Preorder Traversal--leetcode
- SSL Strip的未来:HTTPS 前端劫持
- csdn我又回来了~
- ucos试验代码实例1:任务优先级反转
- 杭电 bestcoder#18 Bits Problem
- 信息安全领域相关术语介绍
- 2014年11月15日--11月23日(共17小时,剩7/409小时)
- DIV+CSS 入门
- c3p0连接池模板
- SSL中间人证书攻击测试演练
- “基于百度地图的巡检系统”的总结体会
- [转]MySQL 字段类型参考
- 单板吉他,音质还可以