入門:LG P2181 對角線
阿新 • • 發佈:2020-12-21
對角線:一秒鐘就應該做出來的題,結果花了一個小時還多。
先是寫到了n=5,然後就沒轍了。
然後想到每一條新增對角線的交點,發現要在該條對角線兩側各取一個連上,答案+1,搞出遞推。推通項的時候錯了幾次,公式是對的,但是double精度不夠、longlong範圍不夠、unsigned long long範圍也不夠,翻了題解。
發現就是簡單地選四個點連X形,然後結果在unsigned ll裡面,但是需要及時除。運用一點點同餘的知識即可得到答案。
總之就是太菜了。
附帶一些小知識點:long double 不要用、lf只在輸入double的時候用,輸出浮點數都用%f;longlong很多時候還是會被卡,沒有正負需求就直接上unsigned保險;double範圍賊大但是精度不夠(只有15位)。Unsigned ll大概在4.2e18,int在2.1e9。
#include<cstdio> using namespace std; int main(){ unsigned long long n; scanf("%lld",&n); //n = ((n+1)*(n*n-7*n+18)/24-1)*n; n = n*(n-1)/2*(n-2)/3*(n-3)/4; printf("%lld\n",n); return 0; }