所以我們只用看∑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分 我們容易發現峰一定是最大的那個數,我們把峰放到每乙個位置上,然後在往峰的左邊隨便填一些數,每種填數的方法...