【入門1】順序結構 P2181 對角線 數學結論+過程溢出,結果不溢出的處理

【入門1】順序結構 P2181 對角線

【入門1】順序結構

思路(這個思路不是自己想出來的,是查了數學的相關資料才得出的,憑空推導C(n,4)是做不到的)如下:

每一個四邊形中,都有一個交點。

從頂點中,任選4個點,組成四邊形。

對正五邊形,C(5,4)=5

正六邊形C(6,4)=C(6,2)=6*5/2*1=15

n=10^5,C(10^5,4)=10^5*(10^5-1)*(10^5-2)*(10^5-3)/(4*3*2*1)=4*10^18

2^63-1=9.0*10^18

計算過程中long long要溢出,但計算結果會溢出。

隨機試試9*8*7*6,8*7*6*5,7*6*5*4,6*5*4*3,5*4*3*2,4*3*2*1

可以看到,一定有一個數可以整除3,一定有一個數可以整除4,一定有一個數可以整除2.

AC代碼如下:

#include <bits/stdc++.h>
#define LL long long
LL a[5];
int main(){
	LL n,ans=1;
	int i;
	scanf("%lld",&n);
	for(i=0;i<4;i++)a[i]=n-i;
	for(i=0;i<4;i++)
		if(a[i]%3==0){a[i]/=3;break;}
	for(i=0;i<4;i++)
		if(a[i]%4==0){a[i]/=4;break;}
	for(i=0;i<4;i++)
		if(a[i]%2==0){a[i]/=2;break;}
	for(i=0;i<4;i++)ans*=a[i];
	printf("%lld\n",ans);
	return 0;
}

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章