题目链接:http://lightoj.com/volume_showproblem.php?problem=1054

题意:给你两个数n和m, 求n^m的所有因子和,结果对1000000007求余;(n和m在int范围内)

 和求因子个数有一定的关系,一个数 n 可以表示成 n = p1^a1 * p2^a2 * p3^a3 * ... pk^ak,(其中pi是n的素因子)

那么n的因子和就是 (p1^0+p1^1+p1^2+...+p1^a1)*(p2^0+p2^1+p2^2+...+p2^a2)*...*(pk^0+pk^1+...+pk^ak);

至于为什么可以把这些拆开来想就好了;所以对于每一项我们要求等比数列的和,还有就是除法求余问题运用公式 a/b%mod = a*b^(mod-2);

#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
typedef long long LL;
#define N 100005
using namespace std;
const double eps = 1e-;
const LL mod = ; int f[N], p[N], k = ;
void Prime()
{
for(int i=; i<N; i++)
{
if(!f[i]) p[k++] = i;
for(int j=i; j<N; j+=i)
f[j] = ;
}
} LL Pow(LL a, LL b)/// Calculate: a^b%mod;
{
LL ans = ;
while(b)
{
if(b&) ans = ans*a%mod;
a = a*a%mod;
b >>= ;
}
return ans;
}
///a/b%mod = a*b^(mod-2)%mod;
LL Sn(LL q, LL n)/// Calculate: (q^n-1)/(q-1)%mod;
{
LL ans = Pow(q, n);
ans = (ans-) * Pow(q-, mod-) % mod;
return (ans+mod)%mod;///因为上面出现了-1所以可能变成负数;
} int main()
{
Prime(); int T, t = ; LL n, m; scanf("%d", &T); while(T--)
{
scanf("%lld %lld", &n, &m); LL ans = ; for(int i=; i<k && (LL)p[i]*p[i]<=n; i++)
{
if(n%p[i])continue;
LL cnt = ; while(n%p[i] == )
{
cnt ++;
n /= p[i];
} cnt = cnt*m+; LL ret = Sn(p[i], cnt); ans = ans*ret%mod;
}
if(n>)
ans = ans*Sn(n, m+)%mod; printf("Case %d: %lld\n", t++, ans);
}
return ;
}

LightOj1054 - Efficient Pseudo Code ( 求n的m次方的因子和 )的更多相关文章

  1. 1054 - Efficient Pseudo Code

    1054 - Efficient Pseudo Code    PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: ...

  2. Lightoj 1054 - Efficient Pseudo Code

    题目连接: http://www.lightoj.com/volume_showproblem.php?problem=1054 题目大意: 给出n,m,问n^m的所有因子之和是多少? 解题思路: 补 ...

  3. 44. log(n)求a的n次方[power(a,n)]

    [题目] 实现函数double Power(double base, int exponent),求base的exponent次方,不需要考虑溢出. [分析] 这是一道看起来很简单的问题,很容易写出如 ...

  4. [LeetCode] Pow(x, n) 求x的n次方

    Implement pow(x, n). 这道题让我们求x的n次方,如果我们只是简单的用个for循环让x乘以自己n次的话,未免也把LeetCode上的想的太简单了,一句话形容图样图森破啊.OJ因超时无 ...

  5. POJ 1845 Sumdiv (求某个数的所有正因子的和)

    题意: 求A^B的所有正因子的和,最后模9901的结果. 思路: 若对一个数n进行素数分解,n=p1^a1*p2^a2*p3^a3*...*pk^ak那么n的所有正因子之和sum=(1+p1+...+ ...

  6. C语言求x的y次方,自定义函数,自己的算法

    我是一名高二中学生,初中时接触电脑,非常酷爱电脑技术,自己百度学习了有两年多了,编程语言也零零散散的学习了一点,想在大学学习计算机专业,所以现在准备系统的学习C语言,并在博客中与大家分享我学习中的心得 ...

  7. 50 Pow(x, n)(求x的n次方Medium)

    题目意思:x为double,n为int,求x的n次方 思路分析:直接求,注意临界条件 class Solution { public: double myPow(double x, int n) { ...

  8. [华为机试练习题]50.求M的N次方的最后三位

    题目 描写叙述: 正整数M 的N次方有可能是一个很大的数字,我们仅仅求该数字的最后三位 例1: 比方输入5和3 ,5的3次方为125.则输出为125 例2: 比方输入2和10 2的10次方为1024 ...

  9. Zoj 3529 A Game Between Alice and Bob 数论+博弈Nim 快速求数中有多少个素数因子

    本题涉及博弈论中的Nim游戏博弈. Nim游戏博弈详解链接: http://www.cnblogs.com/exponent/articles/2141477.html 本题解题报告详解链接: htt ...

随机推荐

  1. BZOJ2062 : 素颜2(face2)

    写个cmp然后sort就好了. cmp的话,需要快速知道两个串的lcp,于是倍增+Hash即可. #include<cstdio> #include<algorithm> ty ...

  2. 【BZOJ】1015: [JSOI2008]星球大战starwar(并查集)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1015 看了题解的囧T_T,一开始以为是求割点,但是想到割点不能统计.... 这题用并查集,思想很巧妙 ...

  3. (译)V8引擎介绍

    V8是什么? V8是谷歌在德国研发中心开发的一个JavaScript引擎.开源并且用C++实现.可以用于运行于客户端和服务端的Javascript程序. V8设计的初衷是为了提高浏览器上JavaScr ...

  4. PHP中有关Session的函数比较多,最常用到的也就这么几个函数

    php中的cookie与session技术详解 一.cookie介绍 cookie常用于识别用户.cookie是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送coo ...

  5. Linux启动过程中几个重要配置文件的执行过程

    Linux 登录后,配置执行顺序为(Debian Serials Capable):/etc/environment -> /etc/profile -> (~/.bash_profile ...

  6. storm在linux系统下安装调试

    安装: 安装 zookeeper : 下载 zookeeper :http://zookeeper.apache.org/releases.html#download. 将 zookeeper-3.4 ...

  7. Web 在线文件管理器学习笔记与总结(13)重命名文件夹(14)复制文件夹

    (13)重命名文件夹 ① 重命名文件夹通过 rename($oldname,$newname) 实现 ② 检测文件夹名是否符合规范 ③ 检测当前目录中是否存在同名文件夹名称,如果不存在则重命名成功 i ...

  8. 一些浏览器的USER-AGENT

    115浏览器的USER-AGENT 版本号:5.1.3.55 Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like G ...

  9. Unity 中 使用c#线程

    使用条件   天下没有免费的午餐,在我使用unity的那一刻,我就感觉到不自在,因为开源所以不知道底层实现,如果只是简单的做点简单游戏,那就无所谓的了,但真正用到实际地方的时候,就会发现一个挨着一个坑 ...

  10. Bootstrap页面布局17 - BS选项卡

    代码结构: <div class='container-fluid'> <h2 class='page-header'>Bootstrap 选项卡</h2> < ...