Sumdiv
Time Limit: 1000MS   Memory Limit: 30000K
Total Submissions: 22680   Accepted: 5660

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

 
【题目大意】
  求A^B的所有约数的和
【题解】
  把A唯一分解,不难得到答案:
   (1+p1+p1^2+……+p1^(φ1*B)) × (1+p2+p2^2+
  ……+p2^(φ2*B)) ×……× (1+pn+pn^2+……+pn^(φn*B))
  问题转化为等比数列求和,此处MOD为质数,存在逆元,但对于更一般的情况,采用分治法,复杂度多一个Log
  cal(p,k) = p^0 + p^1 + p^2 + ... + p^k
  if k&1
    cal(p,k) = (1 + p^((k + 1)/2))*cal(p, (k-1)/2)
  else
    cal(p,k) = (1 + p^(k/2)) * cal(p, k/2 - 1) + p^k
  快速幂即可
 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <cmath> const int INF = 0x3f3f3f3f;
const int MAXN = + ;
const int MOD = ; inline void read(int &x)
{
x = ;char ch = getchar();char c = ch;
while(ch > '' || ch < '')c = ch, ch = getchar();
while(ch <= '' && ch >= '')x = x * + ch - '', ch = getchar();
if(c == '-')x = -x;
} int a,b,cnt,xishu[],zhishu[],ans; int pow(int p, int k)
{
int r = , base = p;
for(;k;k >>= )
{
if(k & )r = ((long long)r * base) % MOD;
base = ((long long)base * base % MOD);
}
return r % MOD;
} //求解1 + p + p^2 + p^3 + ... + p^k
int cal(int p, int k)
{
if(k == ) return ;
if(k == ) return (p + ) % MOD;
if(k & ) return ((long long)( + pow(p, (k + )/)) * (long long)(cal(p, (k - )/))%MOD) % MOD;
else return((long long)(pow(p, k/) + ) * (long long)(cal(p, k/ - )) % MOD + pow(p, k)) % MOD;
} int main()
{
read(a),read(b);
register int nn = sqrt(a) + ;
for(register int i = ;i <= nn && a > ;++ i)
if(a % i == )
{
zhishu[++cnt] = i;
while(a % i == ) ++ xishu[cnt], a /= i;
}
if(a > )zhishu[++cnt] = a, xishu[cnt] = ;
ans = ;
for(register int i = ;i <= cnt;++ i)
{
ans *= cal(zhishu[i], xishu[i] * b);
ans %= MOD;
}
printf("%d", ans%MOD);
return ;
}

POJ1848 Sumdiv

POJ1485 Sumdiv的更多相关文章

  1. POJ 1845 Sumdiv

    快速幂+等比数列求和.... Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12599 Accepted: 305 ...

  2. Sumdiv(快速幂+约数和)

    Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16244 Accepted: 4044 Description C ...

  3. poj 1845 Sumdiv 约数和定理

    Sumdiv 题目连接: http://poj.org/problem?id=1845 Description Consider two natural numbers A and B. Let S ...

  4. Sumdiv 等比数列求和

    Sumdiv Sumdiv Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 15364   Accepted: 3790 De ...

  5. poj 1845 POJ 1845 Sumdiv 数学模板

    筛选法+求一个整数的分解+快速模幂运算+递归求计算1+p+p^2+````+p^nPOJ 1845 Sumdiv求A^B的所有约数之和%9901 */#include<stdio.h>#i ...

  6. 『sumdiv 数学推导 分治』

    sumdiv(POJ 1845) Description 给定两个自然数A和B,S为A^B的所有正整数约数和,编程输出S mod 9901的结果. Input Format 只有一行,两个用空格隔开的 ...

  7. POJ 1845 Sumdiv(逆元)

    题目链接:Sumdiv 题意:给定两个自然数A,B,定义S为A^B所有的自然因子的和,求出S mod 9901的值. 题解:了解下以下知识点   1.整数的唯一分解定理 任意正整数都有且只有唯一的方式 ...

  8. poj1845 Sumdiv

    poj1845 Sumdiv 数学题 令人痛苦van分的数学题! 题意:求a^b的所有约数(包括1和它本身)之和%9901 这怎么做呀!!! 百度:约数和定理,会发现 p1^a1 * p2^a2 * ...

  9. 一本通1633【例 3】Sumdiv

    1633:[例 3]Sumdiv 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 原题来自:Romania OI 2002 求 ABAB 的所有约数之和 mo ...

随机推荐

  1. 网络结构解读之inception系列二:GoogLeNet(Inception V1)

    网络结构解读之inception系列二:GoogLeNet(Inception V1) inception系列的开山之作,有网络结构设计的初期思考. Going deeper with convolu ...

  2. Spring MVC 返回 xml json pdf 数据的配置方法

    <!-- Spring MVC 返回 xml 数据的配置方法 -->     <bean class="org.springframework.web.servlet.vi ...

  3. Leetcode319. Bulb Switcher灯泡开关

    初始时有 n 个灯泡关闭. 第 1 轮,你打开所有的灯泡. 第 2 轮,每两个灯泡你关闭一次. 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭).第 i 轮,每 i 个灯泡切换一次 ...

  4. tp5.1 swoole 实现异步处理

    客户端请求:<?phpnamespace app\index\controller; class Index{ public function index() { $client = new \ ...

  5. 政务私有云盘系统建设的工具 – Mobox私有云盘

    序言 这几年,智慧政务已经成为了政府行业IT建设发展的重要进程.传统办公方式信息传递速度慢.共享程度低.查询利用难,早已成为政府机关获取和利用信息的严重制约因素.建立文档分享共用机制,加强数据整合,避 ...

  6. Ubuntu下samba的安装和配置

    samba是Linux系统上的一种文件共享协议,可以实现Windows系统访问Linux系统上的共享资源,现在介绍一下如何在Ubuntu 14.04上安装和配置samba一. 一.更新源列表 打开&q ...

  7. pyinstaller 打包python3.6文件成exe 运行

    1.安装pyinstaller  切换到安装目录下script 运行  如我的目录:F:\Program Files\Python36\Scripts pip  install pyinstaller ...

  8. 如何用js造轮子

    写了一个非常通俗易懂的造轮子的方法 <div class="wrap"></div> <div class="wrap">& ...

  9. 「EJOI2017」-骆驼

    第一道构造题祭…… 文字叙述: 题目的提示很明显. $N$是$5$的倍数,所以考虑分成$5 \times 5$小块连在一起. 首先通过打表证明, 小块里从任何一点出发,经过所有的格,从任一一点跳出,一 ...

  10. SQL Server数据库存储过程的异常处理

    SQL Server数据库存储过程的异常处理是非常重要的,明确的异常提示能够帮助我们快速地找到问题的根源,节省很多时间.本文我们就以一个插入数据为例来说明SQL Server中的存储过程怎么捕获异常的 ...