NOIP2016提高A組模擬9 15 Math

2021-07-22 18:04:57 字數 994 閱讀 7332

所以我們只用看∑m

j=1d

(i⋅j

) 的值模2的值就可以了。

易證,乙個數x,只有當x是完全平方數時,d(x)才為奇數,否則為偶數。

那麼設i=p

∗q2 ,p不包含任何平方因子, 要使i

⋅j為完全平方數,則j=

p∗k2

, 因為j

<=m

所以j就有mp

−−−√

。 因此我們可以求出每個i對應的p來算出答案。

但對於每個i都求出p的話,時間複雜度為o(

nn√)

發現i=

p∗q2

,當p固定時,q有很多種方案, 而m

p−−−

√ 也是固定的,

那麼如果有乙個i,p=i,那麼

把這直接把所以是這個p的情況全部加入答案,

跳過並且這些所有的這個

p∗q2

#include 

#include

#include

#include

#include

#include

#include

const

int maxlongint=2147483647;

const

int mo=1000000007;

const

int n=10000005;

using

namespace

std;

long

long zs[300000],n,m,ans;

bool bz[n];

int main()

printf("%lld",ans);

}

NOIP2016提高組模擬 積木

比賽的時候用了個神奇的小暴力,本來打算拿40分,沒想到暴力出奇蹟,隨機資料下表現優良,居然碾過去了。暴力方法不講,只貼 僅供對拍。正解顯然要用狀態壓縮 看資料範圍 設fs i,0 1 2 s表示當前已選擇的積木集合,i表示在最上方的積木編號,0 1 2表示最上方的積木哪面朝上。轉移方程容易推導。暴力...

計數 NOIP2016提高A組模擬7 15

樣例輸入 2 10 樣例輸出 90資料範圍 剖解題目 題目說的很明了了。思路 求方案數,一般會設計道dp,規律之類的。解法 數字dp,設f i j 表示當前到了第i位,這一位的數字是j的方案數。自然有 f i j f i 1 l f i j 0 l k 且 l 0 and j 0 看到這位數,很明顯...

NOIP2016提高A組模擬9 2 單峰

問1 n,n個數的全排列中有多少個滿足單峰序列的性質,並把答案mod 1e9 7 這題還是很簡單的,一開始打了乙個50分的做法,然後發現答案就是2n 1,然後沒有發現輸入也會爆,於是就得了50分 我們容易發現峰一定是最大的那個數,我們把峰放到每乙個位置上,然後在往峰的左邊隨便填一些數,每種填數的方法...