入门: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; 
}

  

  

posted @ 2020-12-21 16:01  难以理解  阅读(101)  评论(0)    收藏  举报