-
Notifications
You must be signed in to change notification settings - Fork 113
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create Adjacent Bit Counts.cpp #177
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi,
i have few concerns and questions, please consider them.
/* | ||
For a string of n bits x1,x2,x3,...,Xn the adjacent bit count of the string (AdjBC(x)) is given by | ||
X1*X2 + X2*X3 + X3*X4 + ... + Xn-1 * Xn | ||
which counts the number of times a 1 bit is adjacent to another 1 bit. For example: | ||
AdjBC(011101101) = 3 | ||
AdjBC(111101101) = 4 | ||
AdjBC(010101010) = 0 | ||
Write a program which takes as input integers n and k and returns the number of bit strings x of n bits (out of 2ⁿ) that satisfy AdjBC(x) = k. For example, for 5 bit strings, there are 6 ways of getting AdjBC(x) = 2: | ||
11100, 01110, 00111, 10111, 11101, 11011 | ||
Input | ||
The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of data sets that follow. Each data set is a single line that contains the data set number, followed by a space, followed by a decimal integer giving the number (n) of bits in the bit strings, followed by a single space, followed by a decimal integer (k) giving the desired adjacent bit count. The number of bits (n) will not be greater than 100. | ||
Output | ||
For each data set there is one line of output. It contains the data set number followed by a single space, followed by the number of n-bit strings with adjacent bit count equal to k. As answer can be very large print your answer modulo 10^9+7. | ||
Sample Input | ||
10 | ||
1 5 2 | ||
2 20 8 | ||
3 30 17 | ||
4 40 24 | ||
5 50 37 | ||
6 60 52 | ||
7 70 59 | ||
8 80 73 | ||
9 90 84 | ||
10 100 90 | ||
Sample Output | ||
1 6 | ||
2 63426 | ||
3 1861225 | ||
4 168212501 | ||
5 44874764 | ||
6 160916 | ||
7 22937308 | ||
8 99167 | ||
9 15476 | ||
10 23076518 | ||
*/ | ||
|
||
// C++ program to count number of binary strings | ||
// with k times appearing consecutive 1's. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
are these lines really needed?
// C++ program to count number of binary strings | ||
// with k times appearing consecutive 1's. | ||
//http://shuklas664.blogspot.com/2015/01/gnyr09f-solution.html | ||
#include <bits/stdc++.h> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it's not a good practice to use this header, it can be understood only in problem solving context.
|
||
int count(int n, int k) | ||
{ | ||
// dp[i][j][0] stores count of binary |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe instead of using abstract variables names n and k you would use expressive names to explain your logic with no need to very long comments?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅
so what was the issue remaining?
Fixes issue:
Changes: