小w又來氵題解啦~~
戳這裡給出乙個質數 ,要求你判斷這個質數是否是兩個立方數的差,即判斷是否存在正整數\(a,b\)滿足\(a^3-b^3=p\)。
從檔案cubicp.in中讀入資料。
多組資料。
第一行給出乙個\(t\) ,表示有\(t\)組資料。
接下來\(t\)行,每行乙個質數\(p\)。
輸出到檔案cubicp.out中。
輸出\(t\)行,對於每個數如果是立方差數,輸出yes,否則輸出no。
對於\(30\%\)的資料,\(2≤p≤100\);
對於\(60\%\)的資料,\(2≤p≤10^6\)
對於\(100\%\)的資料\(2≤p≤10^\),\(1≤t≤100\),並且保證每個\(p\)均為質數。
看了這道題……很明顯,這是一道數學題(你這不是廢話嗎)。
首先,這裡有乙個立方差。
由立方差公式:\(a^3-b^3=(a-b)(a^2+ab+b^3)\)
可得:\(p=a^3-b^3=(a-b)(a^2+ab+b^3)\) (字母都一樣啊喂!)
∵ \(p\) 為質數
∴ \((a-b)=1\)
這裡小w解釋一下:因為題目中已經說\(p\)是質數了,所以\((a-b)\)和\((a^2+ab+b^2)\)肯定有乙個為\(1\)(要是有其他的就不是質數了對吧)
而要是\((a^2+ab+b^2)=1\)的話,我們就會明顯地發現:\(a^3-b^3=a-b\)
明顯不成立
所以這裡只能讓\((a-b)=1\)了
接著繼續:
∴ \(b=a-1\)
這個也不用多說了吧?簡易方程五年級下學期謝謝。
然後我們就只需要列舉乙個\(a\)到\(\frac\)。因為\(p\)最大為\(10^\),所以這裡也就是\(10^6\)。
這樣的話,單次時間複雜度為\(o(\frac)\),總共為\(o(\frac)\)
貼下**:
#include using namespace std;
long long p;
long long t;
bool flag;
inline long long read()
while (ch >= '0' && ch <= '9')
return x * f;
}int main()
}if (flag == true)
continue;
printf("no\n");
}return 0;
}
但是!這還遠遠沒有完。雖然剛剛我們的時間複雜度已經可以通過這道題了,但我們可以把單次時間壓縮為\(o(1)\)!
這個想法來自於lmt(%%%),他寫出了比標程還快的程式!
剛剛我們已經推到了\(p=(a^2+ab+b^2)\),並且\(b=a-1\)
那麼\(p=(a^2-2ab+b^2+3ab)\)
由完全平方公式\(a^2-2ab+b^2=(a-b)^2\)
可得:\(p=(a-b)^2+3ab\)
∵ \((a-b)=1\)
∴ \(p=1+3ab\)
∵ \(b=a-1\)
∴ \(p=1+3a(a-1)\)
這樣的話,如果\((p-1)%3≠0\),也就是說\(p-1\)並不是\(3\)的倍數,這就意味著這個肯定不成立,可以直接輸出no
若成立,那麼\(p=3a(a-1)\)
那麼\(\lfloor \sqrt \rfloor=a-1\)
那麼有人就一臉懵逼了:
這是什麼鬼操作???
首先,我們已知\(p=a(a-1)\)
那麼\((a-1)<\sqrt<a\)
此時\(\lfloor \sqrt \rfloor=a-1\)
還可以得出\(\lfloor \sqrt \rfloor +1=a\)
這樣,我們就無須列舉\(a\),成功把時間降到線性。單次時間複雜度\(o(1)\),總共為\(o(t)\)
#include #include #include using namespace std;
int n;
long long p;
int main() else else }}
return 0;
}
至此,這篇題解就氵完了 雷達裝置 Ybtoj
有n nn個建築物,第i ii個建築物在笛卡爾座標系上的座標為 xi yi x i,y i xi y i 你需要在x xx軸上安裝一些雷達,每個雷達的偵察半徑均為d dd,要求每個建築物都至少被乙個雷達偵測到,求最少要安裝幾個雷達。第一行兩個正整數n,d n,dn,d。接下來n nn行,第i ii行...
YBTOJ 電路維修
思路 乍一看這題,沒有bfs的頭緒 但是,我們想到了spfa 我們可以把地圖中的每個點看成方格,這樣就有 n 1 m 1 個方格 如果兩點之間有線聯通,那它們之間的邊權就是0,否則就為1 然後spfa就可以了 include include include using namespace std i...
YBTOJ 守衛挑戰
有 n 項任務,有乙個數 k 每一項任務成功的概率是 p i 這裡與原題目不同,原題目是百分之 p i 這裡相當於 p i frac 成功後會使 k 加上 a i 問至少成功 l 次且最後 k leq0 的概率是多少。資料範圍 0 leq k leq2000,0 leq l leq n leq 20...