bzoj3209 花神的數論題 數字dp

2022-05-01 22:30:14 字數 928 閱讀 8733

花神的數論題 bzoj-3209

題目大意:sum(i)表示i的二進位制表示中1的個數,求$\prod\limits_^n sum(i)$

注釋:$1\le n\le 10^$。

想法:噴一下題目...神tm數論題,明明是個dp。

顯然,如果稍微打個表的話就可以發現,有很多數的sum是相等的,我們不想重複乘這麼多次,所以我們想到將所有sum相等的數弄到一起然後快速冪。這樣,就不難想到數字dp

狀態:dp[i][j]表示i位,sum值是j的個數。

轉移是容易的,按照數字dp的邊界特判就行了。

最後,附上醜陋的**... ...

#include#include#include#includeusing namespace std;

typedef long long int ll;

const int maxn=60+5;

const ll mod=10000007;

ll n, ans;

ll c[maxn][maxn];

int l,wei[maxn];

void pre()

ll solve(int x)

if(x<0) break;

} return sum;

}ll quick_power(ll x,ll y)

return ans;

}int main()

ans=1ll;

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

printf("%lld\n",ans);

return 0;

}

小結:有意思...別被題面迷惑了(@edwardfrog) 

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 花神要...