題目鏈結
題目描述: 設s
um(i
) sum
(i)表示
i i
的二進位制表示中1的個數 求∏
i=1n
sum(
i)' role="presentation" style="position: relative;">∏ni
=1su
m(i)
∏i=1
nsum
(i)
分析:
1015
<250
1015
<250
顯然sum的最大值為49
直接計算su
m(i)
s um
(i
)比較麻煩,我們可以考慮計算有多少數的su
m值=x
s um
值=
x(列舉
x x
) (有點反演的感覺)
一開始我設計了乙個比較複雜的狀態 f[
i][j
][0/
1][0
/1]' role="presentation" style="position: relative;">f[i
][j]
[0/1
][0/
1]f[
i][j
][0/
1][0
/1]:表示第
i i
位,有j' role="presentation" style="position: relative;">j
j個1,這一位是0還是1,卡不卡上界
寫完之後拍了拍,發現小資料還是可以的,大資料不知道為什麼wa掉了
(倒是可以用來拍一拍小資料)
if (n&(1ll<<_)) f[1][1][1][1]=1;
f[1][0][0][0]=1;
for (int i=1;i<_+1;i++)
for (int j=0;j<=i;j++)
for (int k=0;k<=1;k++)
for (int s=0;s<=1;s++)
if (f[i][j][k][s]) else
}else else
}}
新狀態: f[
i][j
] f[i
][j]
表示i i
位長的數字,其中有
j' role="presentation" style="position: relative;">j
j個1的數字個數
狀態轉移方程:f[
i][j
]=f[
i−1]
[j]+
f[i−
1][j
−1] f[i
][j]
=f[i
−1][
j]+f
[i−1
][j−
1]
什麼,這麼簡單?
i i
位長的數字,一定從i−
1' role="presentation" style="position: relative;">i−1
i−1位的數字轉移而來 而i
i
位的數字轉移有兩種,即在i−
1' role="presentation" style="position: relative;">i−1
i−1位的數字後加
0 0
或者加1' role="presentation" style="position: relative;">1
1初始化:f[
1…n]
[0]=
1 f[1
…n][
0]=1
(實際上就是在
j j
個位置上選擇
i' role="presentation" style="position: relative;">i
i個位置放1)
#include
#include
#include
#define ll long long
using
namespace
std;
const ll p=1e7+7;
ll f[65][65],n;
int _,a[65];
ll ksm(ll a,ll b)
return t%p;
}void prepare()
}ll solve(int x)
if (x<0) break;
}return sum;
}int main()
ll ans=1;
for (int i=1;i<=_;i++)
ans=(ans*ksm(i,solve(i))%p)%p;
printf("%lld\n",ans);
return
0;}
bzoj3209 花神的數論題
題意 求sum 1 sum 2 sum n 其中sum x 表示x的二進位制表達中1的數量。答案模10 7 7。n 10 15。考慮列舉sum x 的值為t,然後求有多少個不大於n的正整數的二進位制表達恰好有t個1,設這個答案為f t 這一部分可以用數字dp來實現。例如要求解1.12,可以將其分成1...
bzoj 3209 花神的數論題
設 sum i 表示 i 的二進位制表示中 1 的個數。給出乙個正整數 n 求 i 1ns um i 枚下1的個數,那麼題目就轉換成了1 n有多少個數的二進位制有x個一。這就很容易數字dp了。f i j 表示i位第一位為1,共j個一的數的數目,g i j 表示i位第一位為0,共j個一的數的數目。容易...
BZOJ3209 花神的數論題
bzoj3209 花神的數論題 背景眾所周知,花神多年來憑藉無邊的神力狂虐各大 oj oi cf tc 當然也包括 ch 啦。描述話說花神這天又來講課了。課後照例有超級難的神題啦 我等蒟蒻又遭殃了。花神的題目是這樣的 設 sum i 表示 i 的二進位制表示中 1 的個數。給出乙個正整數 n 花神要...