洛谷 - P1593 - 因子和 - 费马小定理
类似的因为模数比较小的坑还有卢卡斯定理那道,也是有时候逆元会不存在,因为整除了。使用一些其他方法避免通过逆元。
https://www.luogu.org/fe/problem/P1593
有坑。一定要好好理解费马小定理等逆元存在的条件。费马小定理求逆元的条件是p是质数且a不为0,扩展欧几里得算法的条件是a,m互质。
那么上面用费马小定理求等比数列的分母的逆元的时候,就没有判断a不为0。而他们也不互质所以也不能使用扩展欧几里得算法。
其实当a为0的时候这个退化为等差数列。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=9901;
ll a,b;
ll factor[100][2];
int ftop=0;
void fj() {
for(ll i=2; i*i<=a; i++) {
if(a%i==0) {
ftop++;
factor[ftop][0]=i;
factor[ftop][1]=0;
while(a%i==0) {
factor[ftop][1]++;
a/=i;
}
}
}
if(a!=1) {
ftop++;
factor[ftop][0]=a;
factor[ftop][1]=1;
}
for(int i=1; i<=ftop; i++) {
factor[i][1]*=b;
}
/*for(int i=1; i<=ftop; i++) {
printf("%lld %lld\n",factor[i][0],factor[i][1]);
}*/
}
ll da;
ll qpow(ll x,ll n) {
x%=mod;
ll res=1;
while(n) {
if(n&1) {
res*=x;
if(res>=mod)
res%=mod;
}
x*=x;
if(x>=mod)
x%=mod;
n>>=1;
}
if(res>=mod)
res%=mod;
return res;
}
void calc() {
ll pro=1;
for(int i=1; i<=ftop; i++) {
ll sum=0;
ll &p=factor[i][0];
ll &k=factor[i][1];
if((p-1)%mod==0) {
//退化为等差数列
sum=k+1;
} else {
sum=(qpow(p,k+1)-1+mod)%mod;
//printf("sum=%lld\n",sum);
sum*=qpow(p-1,mod-2);
}
if(sum>=mod)
sum%=mod;
//printf("sum=%lld\n",sum);
pro*=sum;
if(pro>=mod)
pro%=mod;
}
da=pro%mod;
}
int main() {
#ifdef Yinku
freopen("Yinku.in","r",stdin);
#endif // Yinku
scanf("%lld%lld",&a,&b);
if(a==0) {
printf("0\n");
return 0;
}
fj();
calc();
printf("%lld\n",da);
}
洛谷 - P1593 - 因子和 - 费马小定理的更多相关文章
- 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)
洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...
- 洛谷 U5122 T2-power of 2(费马小定理)
U5122 T2-power of 2 题目提供者胡昊 题目描述 是一个十分特殊的式子. 例如: n=0时 =2 然而,太大了 所以,我们让对10007 取模 输入输出格式 输入格式: n 输出格式: ...
- 洛谷 P1593 因子和 || Sumdiv POJ - 1845
以下弃用 这是一道一样的题(poj1845)的数据 没错,所有宣称直接用逆元/快速幂+费马小定理可做的,都会被hack掉(包括大量题解及AC代码) 什么原因呢?只是因为此题的模数太小了...虽然990 ...
- 洛谷 P1593 因子和 题解
题面 这道题在数学方面没什么难度: 对于每一个正整数n: 质因数分解后可以写成n=a1^k1a2^k2……*ai^ki 所求的数的因数和f(n)就等于f(n)=(1+a1+a1^2+……+a1^k1) ...
- 学习:费马小定理 & 欧拉定理
费马小定理 描述 若\(p\)为素数,\(a\in Z\),则有\(a^p\equiv a\pmod p\).如果\(p\nmid a\),则有\(a^{p-1}\equiv 1\pmod p\). ...
- 数论初步(费马小定理) - Happy 2004
Description Consider a positive integer X,and let S be the sum of all positive integer divisors of 2 ...
- 费马小定理&欧拉定理
在p是素数的情况下,对任意整数x都有xp≡x(mod p).这个定理被称作费马小定理其中如果x无法被p整除,我们有xp-1≡1(mod p).利用这条性质,在p是素数的情况下,就很容易求出一个数的逆元 ...
- 【bzoj1951】[Sdoi2010]古代猪文 费马小定理+Lucas定理+中国剩余定理
题目描述 求 $g^{\sum\limits_{k|n}C_{n}^{\frac nk}}\mod 999911659$ 输入 有且仅有一行:两个数N.G,用一个空格分开. 输出 有且仅有一行:一个 ...
- bzoj 1951 lucas crt 费马小定理
首先假设输入的是n,m 我们就是要求m^(Σ(c(n,i) i|n)) mod p 那么根据费马小定理,上式等于 m^(Σ(c(n,i) i|n) mod (p-1)) mod p 那么问题的关键就 ...
随机推荐
- 03 xml封装通信接口
<?php class Response_xml{ /** *按xml方式输出通信 *@param integet $code 状态码 *@param string $message 提示信息 ...
- android-async-http框架
android-async-http 简单介绍:An asynchronous, callback-based Http client for Android built on top of Apac ...
- Unable to run Kiwi tests on iOS8 device
本文转载至 http://stackoverflow.com/questions/25871601/unable-to-run-kiwi-tests-on-ios8-device 5down vote ...
- pygame 安装教程
步骤: 1.去官网下载PyGame 注意:要下载对应版本的包 官网地址:http://www.pygame.org/download.shtml 其中,如果python为以下版本: python 3. ...
- 九度OJ 1115:数字求和 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2396 解决:1507 题目描述: 给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少? 输入: 输入一行 ...
- ABAP抓取异常 try ,endtry.
DATA: O_CX TYPE REF TO CX_ROOT. TRY . MOVE LS_UPLOAD-MENGE TO LS_OUTPUT-MENGE. CATCH CX_ROOT INTO O_ ...
- 7-5 打印选课学生名单(25 point(s)) 【排序】
7-5 打印选课学生名单(25 point(s)) 假设全校有最多40000名学生和最多2500门课程.现给出每个学生的选课清单,要求输出每门课的选课学生名单. 输入格式: 输入的第一行是两个正整数: ...
- KeyChain相关参数的说明
#pragma mark- 密钥类型 //密钥类型键 //CFTypeRef kSecClass // //值 //CFTypeRef kSecClassGenericPassword ...
- 转载-jmeter进阶功能
在这此对新版本jmeter的学习+温习的过程,发现了一些以前不知道的功能,所以,整理出来与大分享.本文内容如下. 如何使用英文界面的jmeter 如何使用镜像服务器 Jmeter分布式测试 启动Deb ...
- 纯属娱乐,对入门Android有一定的帮助
package android.m9; import android.app.Activity; import android.os.Bundle; import android.view.Men ...