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

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值