最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

[U]3.2.1Factorials有点点意思的水题

来源:动视网 责编:小采 时间:2020-11-09 07:43:20
文档

[U]3.2.1Factorials有点点意思的水题

[U]3.2.1Factorials有点点意思的水题:以前在XTU的比赛中做过这个题,当时没过,到后面还是用了个猥琐的方法过的。 可能是不记得了当时用的高精度法没过,这次看到这题直接采用赤裸裸的高精度,结果... 在本地跑那速度.....= = 于是乎,还是采用了猥琐的方法;但是为什么每次mod10000
推荐度:
导读[U]3.2.1Factorials有点点意思的水题:以前在XTU的比赛中做过这个题,当时没过,到后面还是用了个猥琐的方法过的。 可能是不记得了当时用的高精度法没过,这次看到这题直接采用赤裸裸的高精度,结果... 在本地跑那速度.....= = 于是乎,还是采用了猥琐的方法;但是为什么每次mod10000


以前在XTU的比赛中做过这个题,当时没过,到后面还是用了个猥琐的方法过的。 可能是不记得了当时用的高精度法没过,这次看到这题直接采用赤裸裸的高精度,结果... 在本地跑那速度.....= =|||| 于是乎,还是采用了猥琐的方法;但是为什么每次mod100000呢??

以前在XTU的比赛中做过这个题,当时没过,到后面还是用了个猥琐的方法过的。

可能是不记得了当时用的高精度法没过,这次看到这题直接采用赤裸裸的高精度,结果... 在本地跑那速度.....= =||||

于是乎,还是采用了猥琐的方法;但是为什么每次mod100000呢??而每次mod10000就WA呢?

解释:

首先我们不能采用赤裸裸的保留末位非零数的方法。

原因:进位,使得末位为0;而在一种情况下,会发生进位,两乘数含有2和5的因子,末位为0的数例如x*10==x*2*5,所以末位为零一定包含了这两个因子!而其他情况下是不会发生末位为0的进位的。通过这样便可以将所有使得进位的因素去除,去掉等量的2和5,以保持不进位,再通过保留个位的方式得出答案。

那么为啥每次要mod100000,当A,B∈[1,4220]最多有多少进位使得末位为0?(5^5=3125)<4220<(5^6);所以在[1,4220]中最多有5个5的因子,通过与2绑定形成的数最大为3125*(2^5)=100000;所以最大的进位也就100000。

Code:

/*
ID:bysen
LANG:C++
PROG:fact4
*/
#include
#define mod 100000
using namespace std;

int main()
{
 	freopen( "fact4.in","r",stdin );
 	freopen( "fact4.out","w",stdout );
 	int n;
 	scanf( "%d",&n );
 	int ans=1;
 	for( int i=1;i<=n;i++ )
 	{
 	 while( ans%10==0 )
 	 	ans/=10;
 	 ans=(ans*i)%mod;
	}	 
	
 	while( ans%10==0 )
 	 ans/=10;
 	
 	printf( "%d\n",ans%10 );
 	return 0;
}

文档

[U]3.2.1Factorials有点点意思的水题

[U]3.2.1Factorials有点点意思的水题:以前在XTU的比赛中做过这个题,当时没过,到后面还是用了个猥琐的方法过的。 可能是不记得了当时用的高精度法没过,这次看到这题直接采用赤裸裸的高精度,结果... 在本地跑那速度.....= = 于是乎,还是采用了猥琐的方法;但是为什么每次mod10000
推荐度:
标签: 点点 以前 意思
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top