最開始的時候想用暴力的思路,從-r搜到r,後來一看資料,毀了資料太大。接著想到優化,圓加座標可以抽象的分解為全等的八塊,因此只需求從二分之根號二r到r的整點中符合要求的,但是依然超時了,後來仔細分析了一下後發現,這根本就是一道數學題,詳解如下:
根據上述描述得到程式如下:
#include#include感謝各位的**,希望能有所收穫,謝謝。#include
#include
using
namespace
std;
setint,int> >s;
long
long
intr;
void search(int x,int
y) s.insert(make_pair(tx*y,ty*y));}}
}} intmain()
}printf(
"%d\n
",s.size()*8+4);
return0;
}
bzoj1041 圓上的整點(一種新奇的思路)
用了一種新奇的方法重溫了這道題目。學弟發來的定理很妙呦orz 有上述定理,則問題轉化為求r 2的 4餘1因子數 和 4餘3因子數。用約數個數定理,去掉偶因子後可以求出兩者之和 因此,求其中一種即可。從 4餘1的因子數下手吧 易知 4餘1的因子定是由任意多個 4餘1的質數和偶數個 4餘3的質數相乘得來...
bzoj 1041 HAOI2008 圓上的整點
有上述定理,則問題轉化為求r 2的 4餘1因子數 和 4餘3因子數。用約數個數定理,去掉偶因子後可以求出兩者之和 因此,求其中一種即可。從 4餘1的因子數下手吧 易知 4餘1的因子定是由任意多個 4餘1的質數和偶數個 4餘3的質數相乘得來的 任意多個 4餘1的質數實際上就是最大的 4餘1的質數的因子...
bzoj 2178 圓的面積並
給出n個圓,求其面積並 先給乙個數字n n 1000 接下來是n行是圓的圓心,半徑,其絕對值均為小於1000的整數 面積並,保留三位小數 自適應辛普森。留個模板好了 include include include include includeusing namespace std const do...