入门:LG P2181 对角线
对角线:一秒钟就应该做出来的题,结果花了一个小时还多。
先是写到了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;
}

浙公网安备 33010602011771号