[Submit] [Status] [Discuss]
Description
Background
As we all know, for many years, huashen has abused various major OJ, OI, CF, TC ...... Of course, CH is also included.
Description
It's said that Hua Shen has come to give lectures again this day. As shown in the following example, there are super difficult questions ...... I am sorry again.
The question of huashen is:
Set sum (I) to represent the number of 1 in the binary representation of I. A positive integer N is given.
Sum (I), that is, the product of sum (1)-sum (N.
Input
A positive integer N.
Output
A number. The answer model is a value of 10000007.
Sample Input
Example 1
3
Sample Output
Sample output 1
2
HINT
For example 1, 1*1*2 = 2;
Data scope and conventions
For 100% of the data, N ≤ 10 ^ 15
Source
Original Memphis
[Submit] [Status] [Discuss]
Bytes
Okay ...... The starting range of this question is N <= 1015
Then I naively thought it was not water ^? Result ......
Okay ......
It will be discovered only after the data is sent ......
N <= 10 ^ 15
This is the only way to cheat a hacker like me ......
By various D ......
OK, so this is the digital statistics ......
Just learned ...... (Still learning this <-weak)
[Cpp]
# Include <cstdio>
# Include <cstdlib>
# Include <cstring>
# Include <iostream>
# Include <algorithm>
# Include <functional>
# Include <cmath>
# Include <cctype>
Using namespace std;
# Define For (I, n) for (int I = 1; I <= n; I ++)
# Define Rep (I, n) for (int I = 0; I <n; I ++)
# Define Fork (I, k, n) for (int I = k; I <= n; I ++)
# Define ForD (I, n) for (int I = n; I --)
# Define Forp (x) for (int p = pre [x]; p = next [p])
# Define RepD (I, n) for (int I = n; I> = 0; I --)
# Define MAXN (100000)
# Define MAXL (50 + 10)
# Define F (10000007)
Int a [MAXN], len = 0;
Long C [MAXL] [MAXL];
Long n;
Long calc (int k)
{
Long ans = 0;
ForD (I, len)
{
If (a [I])
{
Ans + = C [I-1] [k];
K --;
}
If (k <0) return ans;
}
Return ans;
}
Long pow2 (long a, long B)
{
If (B = 0) return 1;
If (B = 1) return;
Long tmp = pow2 (a, B/2 );
Tmp = tmp * tmp % F;
If (B % 2) tmp = (tmp * a) % F;
Return tmp;
}
Int main ()
{
// Freopen ("flower1.in", "r", stdin );
// Freopen (". out", "w", stdout );
Rep (I, 50)
{
C [I] [0] = 1;
For (j, I) C [I] [j] = (C [I-1] [j] + C [I-1] [J-1]);
}
/*
Cout <pow2 (2,1001) <endl;
Int pp = 1;
For (I, 1001) pp = (pp * 2) % F; cout <pp;
*/
While (cin> n)
{
N ++; // cout <n <endl;
Len = 0;
While (n) {a [++ len] = n % 2; n/= 2 ;}
Long ans = 1; // cout <len <endl;
For (I, len) ans = (ans * pow2 (I, calc (I) % F;
Printf ("% lld \ n", ans );
};
Return 0;
}
# Include <cstdio>
# Include <cstdlib>
# Include <cstring>
# Include <iostream>
# Include <algorithm>
# Include <functional>
# Include <cmath>
# Include <cctype>
Using namespace std;
# Define For (I, n) for (int I = 1; I <= n; I ++)
# Define Rep (I, n) for (int I = 0; I <n; I ++)
# Define Fork (I, k, n) for (int I = k; I <= n; I ++)
# Define ForD (I, n) for (int I = n; I --)
# Define Forp (x) for (int p = pre [x]; p = next [p])
# Define RepD (I, n) for (int I = n; I> = 0; I --)
# Define MAXN (100000)
# Define MAXL (50 + 10)
# Define F (10000007)
Int a [MAXN], len = 0;
Long C [MAXL] [MAXL];
Long n;
Long calc (int k)
{
Long ans = 0;
ForD (I, len)
{
If (a [I])
{
Ans + = C [I-1] [k];
K --;
}
If (k <0) return ans;
}
Return ans;
}
Long pow2 (long a, long B)
{
If (B = 0) return 1;
If (B = 1) return;
Long tmp = pow2 (a, B/2 );
Tmp = tmp * tmp % F;
If (B % 2) tmp = (tmp * a) % F;
Return tmp;
}
Int main ()
{
// Freopen ("flower1.in", "r", stdin );
// Freopen (". out", "w", stdout );
Rep (I, 50)
{
C [I] [0] = 1;
For (j, I) C [I] [j] = (C [I-1] [j] + C [I-1] [J-1]);
}
/*
Cout <pow2 (2,1001) <endl;
Int pp = 1;
For (I, 1001) pp = (pp * 2) % F; cout <pp;
*/
While (cin> n)
{
N ++; // cout <n <endl;
Len = 0;
While (n) {a [++ len] = n % 2; n/= 2 ;}
Long ans = 1; // cout <len <endl;
For (I, len) ans = (ans * pow2 (I, calc (I) % F;
Printf ("% lld \ n", ans );
};
Return 0;
}