质数--luogu2155沙拉公主的困惑

2024-01-03 14:39

本文主要是介绍质数--luogu2155沙拉公主的困惑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

啊不带了写题解了
放个很好的链接
www.cnblogs.com/yangyaojia

然后贴代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 10000005
using namespace std;
int t,mod,n[maxn],m[maxn],mn,mm,ans;
int inv[maxn],k[maxn],f1[maxn],f2[maxn];
bool vis[maxn];inline int rd(){int x=0,f=1; char c=' ';while(c>'9' || c<'0') {if(c=='-') f=-1; c=getchar();}while(c<='9' && c>='0') x=x*10+c-'0', c=getchar();return x*f;
}inline void work(){inv[1]=1,k[1]=1,f1[1]=1,f2[1]=1;for(int i=2;i<=sqrt(mm);i++)if(!vis[i])for(int j=2;j<=mn/i;j++) vis[i*j]=1;for(int i=2;i<=mn;i++){if(i<=mm){inv[i]=(1LL*(mod-mod/i)*inv[mod%i])%mod;}if(i<=mm){if(!vis[i]){f1[i]=(1LL*f1[i-1]*((i-1)%mod))%mod;f2[i]=(1LL*f2[i-1]*inv[i])%mod;}else{f1[i]=f1[i-1];f2[i]=f2[i-1];  }}k[i]=(1LL*k[i-1]*(i%mod))%mod;}
}int main(){t=rd(); mod=rd();for(int i=1;i<=t;i++){n[i]=rd(); m[i]=rd();mn=max(mn,n[i]); mm=max(mm,m[i]);}work();for(int i=1;i<=t;i++){ans=(((1LL*k[n[i]]%mod)*1LL*(f1[m[i]]%mod)%mod)*1LL*(f2[m[i]]%mod))%mod;printf("%d\n",ans);}return 0;
}

这篇关于质数--luogu2155沙拉公主的困惑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/566034

相关文章

【ReactJS】困惑于text/babel与browser.js还是babel.js?

使用JSX   使用JSX,可以极大的简化React元素的创建,JSX抽象化了React.createElement()函数的使用,其语法风格类似于HTML语法风格。对比如下代码可以让你更好的理解这一点。 // 使用React.createElement()return React.createElement('div',null,'Hello',this.props.name);//使用J

js算法题,给任意一个偶数,找出他的所有的质数因子

/*给任意一个偶数,找出他的所有的质数因子*/ function primeFactor(n){     var factors=[],            divistor=2;     if(typeof n !=='number'||!Number.isInteger(n)){          return 0;     }; //如果不是偶数返回0,如果是0,返回0

算法---计数质数(Java)

题目:计数质数 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例 1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 示例 2: 输入:n = 0 输出:0 示例 3: 输入:n = 1 输出:0 提示: 0 <= n <= 5 * 106 解决方法:(埃氏筛) 思路: 算法由希腊数学家厄拉多塞(\rm

leetcode 204:计数质数

int countPrimes(int n) {if(n<=0)return 0;int c=0;for(int i=2;i<n;i++){int flag=0;for(int j=2;j<=std::sqrt(i);j++){if(i%j==0){flag=1;break;}}if(flag==0)c++;}return c;}

深度学习100问31:如何降低语言模型的困惑度

嘿,想让语言模型的困惑度降低,有几个好办法哦。   首先呢,可以多给它找点“学习资料”,也就是增加训练数据量。这就像一个学生,读的书越多,学到的知识就越多,就越聪明。语言模型有了大量的文本数据,就能更好地掌握语言的规律,预测下一个词的时候就更准啦,困惑度也就降下来了。   然后呀,可以给它升级一下“装备”,也就是优化模型结构。试试更厉害的模型结构,就像给工匠一把更好的工具,他就能做出更棒的作品。调

第九届中国大学生程序设计竞赛(秦皇岛)-(CCPC2023-Qinhuangdao F - 质数之谜(DP)

题意 给定一个序列,修改最少数量的元素使得任意i属于[1,n-1],q[i]+q[i+1]都为质数,输出最小修改次数 思路 首先手玩的过程中可以发现,     如果因为前面一个数字和自己相加不是质数然后我把自己变成了奇数,那么如果我后面一个数字是偶数     可以发现自己肯定能找到另一个奇数使得和前面相加互质并且和后面相加也互质     举个例子:假设为2 8 10,我此时是8,我发现2+

力扣刷题--762. 二进制表示中质数个计算置位【简单】

题目描述🍗 给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。 计算置位位数 就是二进制表示中 1 的个数。 例如, 21 的二进制表示 10101 有 3 个计算置位。 示例 1: 输入:left = 6, right = 10 输出:4 解释: 6 -> 110 (2 个计算置位,2 是质数) 7

《算法竞赛进阶指南》0x31质数

定义 若一个正整数无法被除了1和它本身之外的任何自然数整除,则称这个数为质数(素数),反之为合数。 对于一个足够大的整数N,不超过N的质数大约有 N/lnN个,分布比较松散。 质数的判定 试除法 若一个正整数N为合数,则存在一个能整除N的数T,其中 2 ≤ T ≤ N 2\leq T \leq \sqrt{N} 2≤T≤N ​。 因此,我们只需要扫描 [ 2 , N ] [2,\sqr

筛质数zz

给定一个正整数 nn,请你求出 1∼n1∼n 中质数的个数。 输入格式 共一行,包含整数 nn。 输出格式 共一行,包含一个整数,表示 1∼n1∼n 中质数的个数。 数据范围 1≤n≤1061≤n≤106 输入样例: 8 输出样例: 4 #include <iostream>using namespace std;const int N=1e6+10;int cnt;

Python 判断质数

a = raw_input() #输入数字a = int(a) #强制转换成intb=True #一个标记for i in range(2,a): #从2开始循环本身if a%i==0: #如果除了本身和1以外还能被整除b=False #标记改成Falsebreak #循环结束if b:print 'YES'else:print 'NO'