bzoj 1041 HAOI2008 圓上的整點

2021-08-13 01:00:06 字數 864 閱讀 2034

有上述定理,則問題轉化為求r^2的 %4餘1因子數 和 %4餘3因子數。

用約數個數定理,去掉偶因子後可以求出兩者之和

因此,求其中一種即可。

從%4餘1的因子數下手吧

易知%4餘1的因子定是由任意多個%4餘1的質數和偶數個%4餘3的質數相乘得來的

任意多個%4餘1的質數實際上就是最大的%4餘1的質數的因子數,上約數個數定理

取偶數個%4餘3的質數怎麼求呢?入門dp……

#include 

#include

#define ll long long

#define n 80

using namespace std;

int n,cnt;

ll mo[3],ans;

struct nodeu,q[n];

ll f[n][2];

int main()

}if(n>1)

}f[0][0]=1;

for(i=1;i<=cnt;i++) f[i][0]=f[i-1][0]*(

q[i].k/2+1)+f[i-1][1]*((q[i].k+1)/2),

f[i][1]=f[i-1][0]*((q[i].k+1)/2)+f[i-1][1]*(

q[i].k/2+1);

mo[1]=mo[1]*f[cnt][0],mo[2]=mo[0]-mo[1];

ans=4

*(mo[1]-mo[2]);

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

}

BZOJ 1041 圓上的整點

最開始的時候想用暴力的思路,從 r搜到r,後來一看資料,毀了資料太大。接著想到優化,圓加座標可以抽象的分解為全等的八塊,因此只需求從二分之根號二r到r的整點中符合要求的,但是依然超時了,後來仔細分析了一下後發現,這根本就是一道數學題,詳解如下 根據上述描述得到程式如下 include include...

BZOJ1055 HAOI 玩具取名

某人有一套玩具,並想法給玩具命名。首先他選擇wing四個字母中的任意乙個字母作為玩具的基本名字。然後 他會根據自己的喜好,將名字中任意乙個字母用 wing 中任意兩個字母代替,使得自己的名字能夠擴充得很長。現在,他想請你猜猜某乙個很長的名字,最初可能是由哪幾個字母變形過來的。第一行四個整數w i n...

BZOJ 1046 HAOI 上公升序列

1046 haoi2007 上公升序列 time limit 10 sec memory limit 162 mbsubmit 5376 solved 1862 submit status discuss description 對於乙個給定的s 若有p 滿足 x1 x2 xm 且 ax1 2 出s...