小M的因子和

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
 
描述

小M在上课时有些得意忘形,老师想出道题目难住他。小M听说是求因子和,还是非常得意,但是看完题目是求A的B次方的因子和,有些手足无措了,你能解决这个问题吗?

 
输入
有多组测试样例
每行两个数 A ,B ,(1≤A,B≤10^9) 
输出
输出A的B次方的因子和,并对9901取余。
样例输入
2 3
样例输出
15
上传者
Sumdiv
Time Limit: 1000MS   Memory Limit: 30000K
Total Submissions: 13547   Accepted: 3321

Description

Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S modulo 9901 (the rest of the division of S by 9901).

Input

The only line contains the two natural numbers A and B, (0 <= A,B <= 50000000)separated by blanks.

Output

The only line of the output will contain S modulo 9901.

Sample Input

2 3

Sample Output

15

Hint

2^3 = 8. 
The natural divisors of 8 are: 1,2,4,8. Their sum is 15. 
15 modulo 9901 is 15 (that should be output). 

Source

都是一样的。

 /**
这道题,类似于hdu happy 2004.
这题是一个通法。
A^B%P,
拆分A变成素数,因为素数满足因子之和 s(x*y)=s(x)*s(y);
更重要的是,素数的x^n的因子个数是可以求出来的。就是
和(x^n) = 1 + x + x^2 +x^3 +......+x^n; 这样的话,我们就可以轻松解决这样的一个问题了。
提供两种思路。
1 + x + x^2 +x^3 +......+x^n,直接求它对%p的值。运用快速幂也可以的。
这就是第一种方法,也是下面的ac方法。 第二种方法:1 + x + x^2 +x^3 +......+x^n= 等比数列前n+1和。
很据 S(p^X)=1+p+p^2+...+p^X = (p^(X+1)-1)/(p-1);
这样就等于求这个式子了。好的,怎么求呢? p^(X+1)-1 这个应该没有问题,快速幂取模
关键是1/(p-1); 这个不能直接取模。转化为求乘法的逆元。 乘法的逆元??恩。
一开始,我就是这样做的,后来想用费马小定理,联想到了一道题C(n,m)的求法时候
也出现过 n!/(m!*(n-m)!) 对于费马小定理 a%p == a^p-1%p; 那么这样的话,我就能
转化一下,对于 1/(p-1) ,转化为 (p-1)^-1 ==> (p-1)^-1 % mod = (p-1)^mod-2 %mod; 好像这样是对的,是的。
费马小定理的前提是什么? mod是一个素数,这个满足了。
还有一个条件gcd(mod,p-1)==1 这个就不一定了.当p为 mod的倍数+1而且是素数的时候。
就很感慨的发现,p-1就是mod的倍数。
那么费马小定理的路,就不好走了。 那我用扩展欧几里得的算法来求逆元。我看到很多人的解题思路可能都是这个吧。
其实,我依然有一个疑问。
对于(p^(X+1)-1)/(p-1),显然我能对其转化 p%Euler(mod) == t
==> (t ^(x+1)-1)/(t-1); 但是如果 t ^(x+1)%p 为1的时候,这个值就为0了。 例子 A B P
59407 1 9901
**/ #include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<vector>
using namespace std;
typedef long long LL; const LL p = ;
LL prime[],len;
LL num[];
LL dp[],dlen;
void Euler(LL n)
{
LL i,k;
len=;
for(i=; i*i<=n;i++)
{
if(n%i==){
k=;
while(n%i==){
n=n/i;
k++;
}
prime[++len]=i%p;
num[len]=k;
}
}
if(n!=){
prime[++len]=n%p;
num[len]=;
}
}
LL sum_mod(LL a,LL n)
{
LL ans=;
n=n%p;
while(n)
{
if(n&) ans=(ans+a)%p;
n=n>>;
a=(a+a)%p;
}
return ans;
}
LL solve(LL a,LL n)
{
LL p1=a,p2=a,ans,i;
dlen=;
while(n)
{
dp[++dlen]=(n&);
n=n>>;
}
ans=dlen-;
for(i=ans;i>=;i--)
{
p1=sum_mod(p1,p2+);
p2=sum_mod(p2,p2);
if(dp[i]==)
{
p2=sum_mod(p2,a);
p1=(p1+p2)%p;
}
}
return (p1+)%p;
}
int main()
{
LL n,m,i;
while(scanf("%lld%lld",&n,&m)>)
{
if(n==){
printf("0\n");
continue;
}
else if(m==)
{
printf("1\n");
continue;
}
Euler(n);
LL hxl=;
for(i=;i<=len;i++)
{
hxl=(hxl*solve(prime[i],num[i]*m))%p;
}
printf("%lld\n",hxl);
}
return ;
}

nylg 小M的因子和的更多相关文章

  1. CF GYM 100703L Many questions

    题意:题意真坑……龙要问一系列问题,王子骑士公主分别以一个整数回答,如果王子和公主答案差的绝对值比骑士和公主答案差的绝对值小则说王子和公主的答案更相似,反过来如果前者比后者大则说骑士和公主的答案更相似 ...

  2. 用C#制作推箱子小游戏

    思路分析: 一.制作一个地图 二.地图中放置墙.箱子.人.目标等 三.让小人动起来完成推箱子动作 游戏制作: 1.按照上述地图制作一个地图  (12行×13列) 地图可以看做是行和列组成的,即可以看做 ...

  3. 数论初步(费马小定理) - Happy 2004

    Description Consider a positive integer X,and let S be the sum of all positive integer divisors of 2 ...

  4. 洛谷P1593 因子和

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

  5. 胡小兔的 PKUSC2018 游记

    Day 0 一番纠结之后,我还是选择了 PKUSC (Penguin Kingdom University Summer Camp, 企鹅王国大学夏令营)! 理由?扔硬币决定的理由如下: PKU好啊 ...

  6. lesson4-图像分类-小象cv

    CNN网络进化:AlexNet->VGG->GoogleNet->ResNet,深度8->19->22->152GoogleNet:Lsplit->trans ...

  7. 第一个mpvue小程序开发总结

    前言 说起小程序,其实在去年我都还只试着照着官方文档写过demo的,不过现在这家公司小程序做得比较多,我来之后也参与了几个小程序的开发了,最开始那几个是用的wepy,最近一个开始转用mpvue开发,最 ...

  8. hdu 1215(因子和)

    七夕节 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  9. 用RecyclerView做一个小清新的Gallery效果

    一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...

随机推荐

  1. 20145207《Java程序设计》第6周学习总结

    教材学习内容总结 一.输入/输出 InputStream与Outputstream • 串流设计的概念 从应用程序角度看,将数据从来源取出,可以使用输入串流,将数据写入目的地,可以使用输出串流:在Ja ...

  2. C++之路进阶——codevs2313(星际竞速)

    2313 星际竞速 2010年省队选拔赛山东  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master     题目描述 Description 10 年一度的银河系 ...

  3. hdu5314 Happy King

    树分治. 代码 #pragma comment(linker, "/STACK:102400000,102400000") #include<cstdio> #incl ...

  4. 生成apache证书(https应用)

    # cd /usr/local/apache2/conf# tar zxvf ssl.ca-0.1.tar.gz# cd ssl.ca-0.1生成根证书:# ./new-root-ca.sh      ...

  5. shp图层创建

    IField,IFieldEdit,IFields,IFieldsEdit,IGeometryDef,IGeometryDefEdit接口  (2013-05-06 20:40:27) 转载▼ 标签: ...

  6. clock sense和analysis mode

    PrimeTime会自动track clock tree中的inverter和buffer,从而得到每个register的clock sense. 如果clock tree中,只有buffer和inv ...

  7. ahb2apb和apb2apb async bridge

    AHB 3.0目前不支持security world. AHB到APB的async bridge主要包括三个部分: 1)AHB domain 1)产生信号hactive = HSEL & HT ...

  8. zw版【转发·台湾nvp系列Delphi例程】HALCON DivImage2

    zw版[转发·台湾nvp系列Delphi例程]HALCON DivImage2 procedure TForm1.Button1Click(Sender: TObject);var op : HOpe ...

  9. Angularjs之基本概念梳理(一)

    1.Angularjs指令属性ng-app和ng-controller的理解 ng-app指令-标记了AngularJS脚本的作用域,在<html>中添加ng-app属性即说明整个< ...

  10. WCF技术的不同应用场景及其实现分析

    这一篇文章,是总结一下WCF技术,以及基于这个技术发展出来的几个典型应用场景,并且我将尝试对这些不同的WCF实现的原理进行一些比较分析. 关于WCF这个技术的基本概念,如果你不是很清楚,可以参考一下有 ...