Sumdiv
Time Limit: 1000MS   Memory Limit: 30000K
Total Submissions: 17387   Accepted: 4374

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用唯一分解定理分解 A = p1 ^ a1 * p2 ^ a2 * p3 ^ a3 ... * pn ^ an
其中A的因子的个数为 ( 1 + a1) * ( 1 + a2 ) * ( 1 + a3 ) * ... * ( 1 + an)
则A的所有因子的和为 (1 + p1 + p1 ^ 2 + p1 ^ 3 ... + p1 ^ a1) * ( 1 + p2 ^ 1 + p2 ^ 2 + p3 ^ 3 + ... + p2 ^ a2 ) * ... * ( 1 + pn + pn ^ 2 + ... + pn ^ an)
求  a + a ^ 2 + a ^ 3 + ... + a ^ n 
如果n为奇数:  a + a ^ 2 + ... + a ^ (n / 2 )  + a ^ (n / 2 + 1) + ( a + a ^ 2 + ... + a ^ ( n / 2 ) ) *  a ^ ( n / 2 + 1)
如果n为偶数:  a + a ^ 2 + ... + a ^ (n / 2 ) + ( a + a ^ 2 + ... + a ^ ( n /. 2) ) * a ^ (n / 2) 
 #include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long LL;
const int Max = ;
const int Mod = ;
int prime[Max + ],flag[Max],cnt;
void get_prime()
{
cnt = ;
memset(flag, , sizeof(flag));
for(int i = ; i <= Max; i++)
{
if(flag[i] == )
{
flag[i] = ;
prime[++cnt] = i;
for(int j = i; j <= Max / i; j++)
flag[i * j] = ;
}
}
}
LL pow_mod(LL n, LL k)
{
LL res = ;
while(k)
{
if(k & )
res = res * n % Mod;
n = n * n % Mod;
k >>= ;
}
return res;
}
LL get_sum(LL n, LL m)
{
if(m == )
return ;
if(m & )
{
return get_sum(n, m / ) *( + pow_mod(n, m / + ) ) % Mod;
}
else
{
return ( get_sum(n, m / - ) * ( + pow_mod(n, m / + )) % Mod + pow_mod(n, m / ) ) % Mod;
}
}
int main()
{
LL a,b;
get_prime();
while(scanf("%I64d%I64d", &a, &b) != EOF)
{
LL ans = ;
if(a == && b) //特殊情况
ans = ;
LL m;
for(int i = ; i <= cnt; i++)
{
if(prime[i] > a)
break;
m = ;
if(a % prime[i] == )
{
while(a % prime[i] == )
{
a = a / prime[i];
m++;
}
m = m * b; // m要设成LL,否则这里会溢出
ans = ans * get_sum((LL)prime[i], m) % Mod;
}
}
if(a > )
ans = ans * get_sum(a, b) % Mod;
printf("%I64d\n", ans);
}
return ;
}

POJ1845Sumdiv(求所有因子和 + 唯一分解定理)的更多相关文章

  1. HDU-1492-The number of divisors(约数) about Humble Numbers -求因子总数+唯一分解定理的变形

    A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...

  2. 2018.09.28 牛客网contest/197/A因子(唯一分解定理)

    传送门 比赛的时候由于变量名打错了调了很久啊. 这道题显然是唯一分解定理的应用. 我们令P=a1p1∗a2p2∗...∗akpkP=a_1^{p_1}*a_2^{p_2}*...*a_k^{p_k}P ...

  3. Divisors (求解组合数因子个数)【唯一分解定理】

    Divisors 题目链接(点击) Your task in this problem is to determine the number of divisors of Cnk. Just for ...

  4. 【Luogu】P1593因子和(唯一分解定理,约数和公式)

    题目链接 首先介绍两个定理. 整数唯一分解定理:任意正整数都有且只有一种方式写出素数因子的乘积表达式. \(A=(p1k1 p2k2 ...... pnkn \) 求这些因子的代码如下 ;i*i< ...

  5. HDU-1215 七夕节 数论 唯一分解定理 求约数之和

    题目链接:https://cn.vjudge.net/problem/HDU-1215 题意 中文题,自己去看吧,懒得写:) 思路 \[ Ans=\prod \sum p_i^j \] 唯一分解定理 ...

  6. hdu 1215 求约数和 唯一分解定理的基本运用

    http://acm.hdu.edu.cn/showproblem.php?pid=1215 题意:求解小于n的所有因子和 利用数论的唯一分解定理. 若n = p1^e1 * p2^e2 * ……*p ...

  7. NOIP2009Hankson 的趣味题[唯一分解定理|暴力]

    题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲 ...

  8. 1341 - Aladdin and the Flying Carpet ---light oj (唯一分解定理+素数筛选)

    http://lightoj.com/volume_showproblem.php?problem=1341 题目大意: 给你矩形的面积(矩形的边长都是正整数),让你求最小的边大于等于b的矩形的个数. ...

  9. LightOJ 1341 - Aladdin and the Flying Carpet (唯一分解定理 + 素数筛选)

    http://lightoj.com/volume_showproblem.php?problem=1341 Aladdin and the Flying Carpet Time Limit:3000 ...

随机推荐

  1. Sql复习之安全性与权限管理+vmware增加硬盘容量

    参考资料: http://www.cnblogs.com/Jackeyzhang/archive/2011/05/18/2049621.html VmWare虚拟机增加硬盘容量的方法 http://b ...

  2. Asp.net设计模式笔记之二:应用程序分离与关注点分离

    本次笔记主要涉及的内容如下: 1.将智能UI(SmartUI)反模式重构成分层方式的示例代码 2.分层设计与传统的Asp.net WebForm模型(代码后植)相比具有的优势 3.逻辑分层概念以及分离 ...

  3. Matlab中的fread函数

    Matlab中fread函数用法    "fread"以二进制形式,从文件读出数据. 语法1:[a,count]=fread(fid,size,precision) 语法2:[a, ...

  4. JNDI全面总结(zz)

    原理:         在DataSource中事先建立多个数据库连接,保存在数据库连接池中.当程序访问数据库时,只用从连接池中取空闲状态的数据库连接即可,访问结束,销毁资源,数据库连接重新回到连接池 ...

  5. eclipse系列: Cannot change version of project facet Dynamic web的解决方法

    问题描述         用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servl ...

  6. LeetCode 笔记24 Palindrome Partitioning II (智商碾压)

    Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...

  7. iOS开发工具(上班需要必备的软件)

    1 源代码管理工具 SVN:SVN可以使用的客户端软件有Cornerstone,SmartSVN,svnX,乌龟SVN,莲花版svn等等 或者git(sourcetree) 2 有道词典 3 Foxm ...

  8. 8.HBase In Action 第一章-HBase简介(1.2.2 捕获增量数据)

    Data often trickles in and is added to an existing data store for further usage, such as analytics, ...

  9. Android WebView使用深入浅出

    目前很多android app都内置了可以显示web页面的界面,会发现这个界面一般都是由一个叫做WebView的组件渲染出来的,学习该组件可以为你的app开发提升扩展性. 先说下WebView的一些优 ...

  10. CodeIgniter框架中关于URL(index.php)的那些事

    最近,在做自己的个人网站时,采用了轻量级的php框架CodeIgniter.乍一看上去,代码清晰简洁,MVC模型非常容易维护.开发时我采用的工具是Netbeans IDE 8.0,当然,本文的内容和开 ...