牛客练习赛82 B.Mocha 的序列(小思维,同余)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客练习赛82 B.Mocha 的序列(小思维,同余)相关的知识,希望对你有一定的参考价值。

LINK

题意

对于每次询问 3 3 3,需要回答 ∏ i = l r a i % ( r − l + 1 ) ! \\prod\\limits_{i=l}^ra_i\\%(r-l+1)! i=lrai%(rl+1)!


因为初始 a i = i a_i=i ai=i

其中 ∏ i = l r a i \\prod\\limits_{i=l}^ra_i i=lrai是连续的一段 a i a_i ai,区间长度为 r − l + 1 r-l+1 rl+1

而注意到 ( r − l + 1 ) ! = 1 ∗ 2 ∗ 3... ∗ ( r − l + 1 ) (r-l+1)!=1*2*3...*(r-l+1) (rl+1)!=123...(rl+1)

观察到初始时 ∏ i = l r a i = l ∗ ( l + 1 ) ∗ ( l + 2 ) . . ∗ r \\prod\\limits_{i=l}^ra_i=l*(l+1)*(l+2)..*r i=lrai=l(l+1)(l+2)..r

显然 [ l , r ] [l,r] [l,r]中每个数模 r − l + 1 r-l+1 rl+1互不同余,且一定有一个模 r − l + 1 r-l+1 rl+1为零

扩展一下,对于 i ∈ [ 1 , r − l + 1 ] i\\in[1,r-l+1] i[1,rl+1]每个数,在 [ l , r ] [l,r] [l,r]中至少能找到一个数 x x x使得 i i i x x x的因子

那么显然 ∏ i = l r a i \\prod\\limits_{i=l}^ra_i i=lrai有因子 ( r − l + 1 ) ! (r-l+1)! (rl+1)!

所以不管序列怎么乘,怎么平方,答案都是 0 0 0

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;
int n,m;
int main()
{
	cin >> n >> m;
	for(int i=1;i<=m;i++)
	{
		int type,l,r,k; cin >> type >> l >> r;
		if( type==3 )
			cout << 0 << endl;
	}
} 

以上是关于牛客练习赛82 B.Mocha 的序列(小思维,同余)的主要内容,如果未能解决你的问题,请参考以下文章

牛客练习赛82总结+题解(只有A题Mocha 的字符串)

牛客牛客练习赛16(未完)

牛客练习赛89

牛客阿里笔试练习

牛客网Nowcoder 牛客练习赛13 A.幸运数字Ⅰ B.幸运数字Ⅱ(数组或者dfs) C.幸运数字Ⅲ(思维)

牛客练习赛70 F.曲调(离线,思维,权值线段树)