题目描述

输入两个正整数a和b,求a^b的因子和。结果太大,只要输出它对9901的余数。

输入输出格式

输入格式:

仅一行,为两个正整数a和b(0≤a,b≤50000000)。

输出格式:

a^b的因子和对9901的余数。

输入输出样例

输入样例#1:

2 3
输出样例#1:

15
看似不可做,其实非常简单
任意正整数都有且只有一种方式写出其素因子的乘积表达式。

A=(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn)
其中 pi 均为素数
那么A^B=(p1^(k1*B))*(p2^(k2*B))*(p3^(k3*B))*....*(pn^(kn*B))
显然ans=∑i1i2.....∑ik(p1^i1)*(p2^i2)*.....(pk^ik)
   =i1(p1^i1)i2(p2^i2).....∑ik(pk^ik) 但是k*B最大可以达到30000×50000000(极限估算)
这里我们运用指数取模的方法,因为模数很小
根据费马小定理,我们证出:
a^x≡a^(x%μ(p)) (mod p) μ(p)=9900,p=9901
这样我们发现,i(p^i)其实存在长度为μ(p)的循环节
这样,就算k*B再大,我们也可以通过O(μ(p))的求和处理算出循环节
然后就可以直接算出i(p^i)

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long lol;
lol A,B,pri[],cnt[],ans,pw[],tot;
int main()
{lol x,i,j;
cin>>A>>B;
x=A;
for (i=;i*i<=A;i++)
{
if (x%i==)
{
pri[++tot]=i;
while (x%i==)
{
cnt[tot]++;
x/=i;
}
}
}
if (x!=)
{
pri[++tot]=x;
cnt[tot]=;
}
for (i=;i<=tot;i++)
cnt[i]*=B;
ans=;
for (i=tot;i>=;i--)
{
pw[]=;
lol s=,as=;
for (j=;j<=&&j<=cnt[i];j++)
{
pw[j]=pw[j-]*pri[i]%;
s=(s+pw[j])%;
if (cnt[i]%==j)
as=s;
}
ans=(ans*((cnt[i]/)*s+as)%)%;
}
cout<<ans;
}

洛谷P1593 因子和的更多相关文章

  1. 洛谷 P1593 因子和

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

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

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

  3. 洛谷 P1593 因子和 || Sumdiv POJ - 1845

    以下弃用 这是一道一样的题(poj1845)的数据 没错,所有宣称直接用逆元/快速幂+费马小定理可做的,都会被hack掉(包括大量题解及AC代码) 什么原因呢?只是因为此题的模数太小了...虽然990 ...

  4. 洛谷 P1593 因子和 题解

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

  5. 洛谷P1244 青蛙过河 DP/思路

    又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的 ...

  6. [洛谷P3158] [CQOI2011]放棋子

    洛谷题目链接:[CQOI2011]放棋子 题目描述 在一个m行n列的棋盘里放一些彩色的棋子,使得每个格子最多放一个棋子,且不同 颜色的棋子不能在同一行或者同一列.有多少祌方法?例如,n=m=3,有两个 ...

  7. 洛谷P3938 斐波那契

    题目戳 题目描述 小 C 养了一些很可爱的兔子. 有一天,小 C 突然发现兔子们都是严格按照伟大的数学家斐波那契提出的模型来进行 繁衍:一对兔子从出生后第二个月起,每个月刚开始的时候都会产下一对小兔子 ...

  8. 【洛谷2617_BZOJ1901】Dynamic Rankings(树套树)

    题目: 洛谷 2617 BZOJ 1901 是权限题,\(n=10^4\) ,内存 128 MB :洛谷 2617 \(n=10^5\) ,内存 1024 MB ,数据比较坑. 分析: 蒟蒻初学树套树 ...

  9. 洛谷P1880 [NOI1995]石子合并 纪中21日c组T4 2119. 【2016-12-30普及组模拟】环状石子归并

    洛谷P1880 石子合并 纪中2119. 环状石子归并 洛谷传送门 题目描述1 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石 ...

随机推荐

  1. 201621123040《Java程序设计》第十一周学习总结

    1.本周学习总结 1.1以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2.书面作业 2.1源代码阅读:多线程程序BounceThread 2.1.1BallRunnable类有什么用?为什 ...

  2. scrapy 修改URL爬取起始位置

    import scrapy from Autopjt.items import myItem from scrapy.http import Request class AutospdSpider(s ...

  3. 数据恢复案例分享:MSSQL 2000 错误823

    一.故障描述 MSSQL Server 2000 附加数据库错误823,附加数据库失败.数据库没有备份,不能通过备份恢复数据库,急需恢复数据库中的数据. 二.故障分析SQL Server数据库 823 ...

  4. JQuery 动态加载iframe.

    html: <iframe id="ifm" style="width:inherit;height:inherit" runat="serve ...

  5. EasyUI内容页Tabs。

    html: <div data-options="region:'center'"> <div id="tabs" class="e ...

  6. 新概念英语(1-99)Ow!

    Lesson 99 Owl! 啊哟! Listen to the tape then answer this question. Must Andy go to see the doctor?听录音, ...

  7. SpringCloud的Hystrix(五) Hystrix机制

    参考链接:http://www.jianshu.com/p/e07661b9bae8 一.前言 大型复杂的分布式系统中,高可用相关的技术架构非常重要.高可用架构非常重要的一个环节,就是如何将分布式系统 ...

  8. django的models模型 关联关系和关系查询

    模型类关系 关系字段类型 关系型数据库的关系包括三种类型: ForeignKey:一对多,将字段定义在多的一端中. ManyToManyField:多对多,将字段定义在两端中. OneToOneFie ...

  9. Web 项目报错No suitable driver found for jdbc:mysql://localhost:3306/book 的一个解决办法

    确认jar包加入到了build path中,然后注意版本是否与数据库相配,还要留意将jar包放入WEB-INF下的lib文件夹中

  10. FTP文件上传到HDFS上

    在做测试数据时,往往会有ftp数据上传到hdfs的需求,一般需要手动操作,这样做太费事,于是有了下边代码实现的方式: ftp数据上传到hdfs函数: import java.io.InputStrea ...