以下弃用

这是一道一样的题(poj1845)的数据

没错,所有宣称直接用逆元/快速幂+费马小定理可做的,都会被hack掉(包括大量题解及AC代码)

什么原因呢?只是因为此题的模数太小了...虽然9901是质数,但是要求逆元的数完全可能是9901的倍数,从而与9901不互质,从而没有逆元

事实上,只要a是质数且a-1是9901的倍数,就可以hack了

如果涉及版权问题,不能用poj讨论版数据,额外提供几组数据:

217823 1

答案1

950497 1

答案1

另外还有一些程序在处理大数相乘取模时有问题(溢出),因此再提供一组数据:

49999991 2

答案3423

以上弃用


#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#include<cmath>
#include<map>
#include<cassert>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
ll prime[10000],len,ans=1;
const ll md=9901;
bool vis[50100];
void dprime(int x,map<ll,ll> &ma)
{
ma.clear();
if(x<=1) return;
ll i,end=floor(sqrt(x+0.5));
for(i=1;prime[i]<=end;i++)
while(x!=prime[i])
{
if(x%prime[i]==0)
{
ma[prime[i]]++;
x/=prime[i];
}
else
break;
}
ma[x]++;
}
ll multi(ll x,ll y,ll mod)
{
long long tmp=(x*y-(long long)((long double)x/mod*y+1.0e-8)*mod);
return tmp<0 ? tmp+mod : tmp;
}
ll poww(ll a,ll b,ll md=md)
{
a%=md;
ll ans=1,base=a;
for(;b;base=multi(base,base,md),b>>=1)
if(b&1) ans=multi(ans,base,md);
return ans;
}
map<ll,ll> ma;
int main()
{
ll i,j,a,b;
for(i=2;i<=50000;i++)
{
if(!vis[i]) prime[++prime[0]]=i;
for(j=1;j<=prime[0]&&i*prime[j]<=50000;j++)
{
vis[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
scanf("%lld%lld",&a,&b);
if(a==0)
{
puts("0");
return 0;
}
if(a==1)
{
puts("1");
return 0;
}
dprime(a,ma);
for(map<ll,ll>::iterator it=ma.begin();it!=ma.end();it++)
{
pair<ll,ll> x=*it;
x.se*=b;
//printf("a%lld %lld\n",x.fi,x.se);
ans=ans*((poww(x.fi,x.se+1,md*(x.fi-1))-1)/(x.fi-1))%md;
}
printf("%lld",ans%md);
return 0;
}

洛谷 P1593 因子和 || Sumdiv POJ - 1845的更多相关文章

  1. 洛谷 - P1593 - 因子和 - 费马小定理

    类似的因为模数比较小的坑还有卢卡斯定理那道,也是有时候逆元会不存在,因为整除了.使用一些其他方法避免通过逆元. https://www.luogu.org/fe/problem/P1593 有坑.一定 ...

  2. 洛谷 P1593 因子和 题解

    题面 这道题在数学方面没什么难度: 对于每一个正整数n: 质因数分解后可以写成n=a1^k1a2^k2……*ai^ki 所求的数的因数和f(n)就等于f(n)=(1+a1+a1^2+……+a1^k1) ...

  3. 洛谷P1886 滑动窗口(POJ.2823 Sliding Window)(区间最值)

    To 洛谷.1886 滑动窗口 To POJ.2823 Sliding Window 题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每 ...

  4. Sumdiv POJ 1845

    http://poj.org/problem?id=1845 题目 Time Limit: 1000MS   Memory Limit: 30000K Description Consider two ...

  5. 洛谷 P1593 因子和

    https://www.luogu.org/problemnew/show/P1593#sub 利用约数和定理:可以去看一下公式第13条 然后这个题目的话,要求$a^b$,那么我们首先可以先将a分解然 ...

  6. 洛谷P1593 因子和

    题目描述 输入两个正整数a和b,求a^b的因子和.结果太大,只要输出它对9901的余数. 输入输出格式 输入格式: 仅一行,为两个正整数a和b(0≤a,b≤50000000). 输出格式: a^b的因 ...

  7. 洛谷 质因子分 p2043

    #include <iostream>#include <algorithm>#include <cstring>using namespace std; cons ...

  8. Sumdiv POJ - 1845 (逆元/分治)

    Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S m ...

  9. POJ 1845 (洛谷 :题目待添加)Sumdiv

    约数和 题目描述 给出a和b求a^b的约数和. 输入格式: 一行两个数a,b. 输出格式: 一个数表示结果对 9901 的模. Input 2 3 Output 15 SB的思路: 这是一道典型的数论 ...

随机推荐

  1. 【mysql】mysql innodb 配置详解

    MySQL innodb 配置详解 innodb_buffer_pool_size:这是InnoDB最重要的设置,对InnoDB性能有决定性的影响.默认的设置只有8M,所以默认的数据库设置下面Inno ...

  2. 理解数学公式与numpy矩阵运算

    1.矩阵的初始化 (1)创建一个 3*5的全0矩阵和全1矩阵 import numpy as np myzero = np.zeros([3,5]) print myzero myones = np. ...

  3. 未公开函数MessageBoxTimeOut 实现定时消息(ZT) MFC实现MessageBox自动消失

    http://www.blogjava.net/baicker/archive/2007/07/13/130072.html #include <windows.h> #include & ...

  4. hdu 1047 Integer Inquiry(大数)

    题意:整数大数加法 思路:大数模板 #include<iostream> #include<stdio.h> #include<stdlib.h> #include ...

  5. [原创]java在线比较两个word文件

    一.项目背景 开发文档管理系统或OA办公系统的时候,实现在线处理word文档的功能比较容易,但是也经常会有客户提出文档版本管理的需求,这就需要同时在线打开两个word文件,对比两个不同版本的word文 ...

  6. nyoj 1030 hihocoder 1338

    题目链接1: 点这里打开. 题目链接2:   点击打开链接 思路:dp,dp[i][j] 表示某个人在区间 i,j上的得分. sum数组表示前 n 项和, num 数组用来存输入的数字. 因为取数字是 ...

  7. BZOJ-2257:瓶子和燃料(裴蜀定理)

    jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy的飞船上共有 N个瓶子(1<=N<=1000) ,经过 ...

  8. 「NOIP2002」「Codevs1099」 字串变换(BFS

    1099 字串变换 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold   题目描述 Description 已知有两个字串 $A$, ...

  9. SqlSession

  10. 移植最新版libmemcached到VC++的艰苦历程和经验总结(下)

    结果如何呢?我的VC++测试用例还是不能调用该接口的接口方法,只是这次的报错方式有所改变,提示是每个C/C++程序员最不愿意看到的“内存地址访问违规”,这一次我确实被郁闷了,这是为什么呢? 五.gcc ...