洛谷 4317 花神的數論題 數字DP

2022-05-16 00:58:46 字數 1018 閱讀 7561

眾所周知,花神多年來憑藉無邊的神力狂虐各大 oj、oi、cf、tc …… 當然也包括 ch 啦。

話說花神這天又來講課了。課後照例有超級難的神題啦…… 我等蒟蒻又遭殃了。 花神的題目是這樣的:設 sum(i)表示 i的二進位制表示中 1的個數。給出乙個正整數 n,花神要問你 ∏i=1n​sum(i) ,也就是sum(1)∼sum(n)的乘積。

輸入格式:

乙個正整數 n。

輸出格式:

乙個數,答案模 10000007 的值。

輸入樣例#1: 複製

3

輸出樣例#1: 複製

2

對於 100% 的資料,n≤10^15

solution

數字dp

但是不是直接處理出乘積,而是列舉$i$,處理出有多少個數恰好有$i$個1.

最後直接用快速冪乘起來即可。

code

#include#define ll long long

#define mod 10000007

using

namespace

std;

ll n;

ll mpow(ll a, ll b)

ll dp[

55][2][55][55

];int num[55

];ll dfs(

int dep, int up, int sum, int

d) ll ans[

55];

ll cot(ll x)

for(int i = 1; i <= 50; i ++)

ll res = 1

;

for(int i = 1; i <= 50; i ++)

res = (res * mpow(i, ans[i])) %mod;

return

res;

}int

main()

洛谷P4317 花神的數論題

話說花神這天又來講課了。課後照例有超級難的神題啦 我等蒟蒻又遭殃了。花神的題目是這樣的 設 text i 表示 i 的二進位制表示中 1 的個數。給出乙個正整數 n 花神要問你 prod text i 也就是 text 1 sim text n 的乘積。設 f i 為有 i 個一的方案數。可以用組合...

洛谷 P4317 花神的數論題(數字dp)

用數字dp計算有 n以內的數字 有k 個 1的數字有多少個,然後快速冪。數字dp 直接在二進位制位上進行列舉。坑點 1e7 7 不是素數,但數字dp 內部無須取模數值不會爆long long include using namespace std typedef long long ll const...

洛谷 P4317 花神的數論題(數字dp)

題目背景 眾所周知,花神多年來憑藉無邊的神力狂虐各大 oj oi cf tc 當然也包括 ch 啦。題目描述 話說花神這天又來講課了。課後照例有超級難的神題啦 我等蒟蒻又遭殃了。花神的題目是這樣的 設 text i sum i 表示 ii 的二進位制表示中 11 的個數。給出乙個正整數 nn 花神要...