题目连接:

  http://www.lightoj.com/volume_showproblem.php?problem=1054

题目大意:

  给出n,m,问n^m的所有因子之和是多少?

解题思路:

  补充知识:

  1:对于一个数字n=p1^t1+p2^t2+p3^t3+.........+pn^tn。求n因子和等价于n所有因子的子集所对应值相加之和—(p1^0+p1^1+p1^2+......+p1^t1)*(p2^0+p2^1+......+p2^t2)*.....*(pn^0+pn^1+......+pn^tn).

  2:等比数列求和公式:

  3:除法取余:(a/b)%p == a%(b%p)/b%p;

        a/b%p == a*b^(p-2)%p;(当p是素数)   证明:有费马小定理可知:p是素数,(b,p) = 1, b^(p-1)%p == 1,a/b%p == a/b*1%p == a/b*b^(p-1)% == a*b^(p-2)%p.

 #include <bits/stdc++.h>
using namespace std; const int mod = ;
const int maxn = ;
typedef long long LL;
int isprime[maxn], prime[maxn*];
LL sum, k; void Isprime ()
{//筛选出需要的素数
int i, j;
for (i=, k=; i<; i++)
if (!prime[i])
{
isprime[k ++] = i;
for (j=i; j<; j+=i)
prime[j] = ;
}
// printf ("%d\n", k);
} LL Pow (LL x, LL y)
{//快速幂求x^y
LL num = ;
while (y)
{
if (y % )
num = (num * x) % mod;
x = (x * x) % mod;
y /= ;
}
return num;
}
LL solve (LL x, LL y)
{
LL num;
num = (Pow(x, y) - );
num = (num * Pow(x-, mod-)) % mod;
return (num + mod) % mod;
} int main ()
{
LL t, n, m, l = ;
Isprime ();
scanf ("%lld", &t);
while (t --)
{
scanf ("%lld %lld", &n, &m);
LL a, b, i;
i = ;
sum = ;
while (i < k)
{
if ( == n)
break;
a = b = ;//统计还有的素数因子和因子的个数
if (n % isprime[i] == )
{
a = isprime[i];
while (n % isprime[i] == )
{
b ++;
n /= isprime[i];
}
sum = (sum * solve(a, b*m+) ) % mod;
}
i ++; }
if (n != )
sum = (sum * solve(n, m+)) % mod;
printf ("Case %lld: %lld\n", ++l, sum);
}
return ;
}

Lightoj 1054 - Efficient Pseudo Code的更多相关文章

  1. 1054 - Efficient Pseudo Code

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

  2. LightOj1054 - Efficient Pseudo Code ( 求n的m次方的因子和 )

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1054 题意:给你两个数n和m, 求n^m的所有因子和,结果对1000000007求余; ...

  3. Android Programming: Pushing the Limits -- Chapter 2: Efficient Java Code for Android

    Android's Dalvik Java 与 Java SE 进行比较 Java代码优化 内存管理与分配 Android的多线程操作 Android’s Dalvik Java 与 Java SE ...

  4. 专题[vjudge] - 数论0.1

    专题[vjudge] - 数论0.1 web-address : https://cn.vjudge.net/contest/176171 A - Mathematically Hard 题意就是定义 ...

  5. Oracle Applications Multiple Organizations Access Control for Custom Code

    档 ID 420787.1 White Paper Oracle Applications Multiple Organizations Access Control for Custom Code ...

  6. PatentTips - Method and Apparatus to Support Virtualization with Code Patches

    BACKGROUND As recognized in Revision 2.0 of the Intel® Virtualization Technology Specification for t ...

  7. CV code references

    转:http://www.sigvc.org/bbs/thread-72-1-1.html 一.特征提取Feature Extraction:   SIFT [1] [Demo program][SI ...

  8. Java基础常见英语词汇

    Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的                             ['prəʊɡræmɪŋ]编程 OO: object ...

  9. IT软件开发常用英语词汇

    Aabstract 抽象的abstract base class (ABC)抽象基类abstract class 抽象类abstraction 抽象.抽象物.抽象性access 存取.访问access ...

随机推荐

  1. Oracle 用户表空间查看、修改大小、设置自增长等

      分类: Oracle 首先登入某个用户,查看某个用户在哪个表空间下: select username,default_tablespace from user_users; 查看该用户下所有的表: ...

  2. iOS中MRC和ARC混编

    1. 在targets的build phases选项下Compile Sources下选择,不使用arc编译的文件.双击它.输入 -fno-objc-arc 就可以(这个类就能够使用MRC模式) 2. ...

  3. AES算法加密java实现

    package cn.itcast.coderUtils; import java.security.Key; import javax.crypto.Cipher; import javax.cry ...

  4. linux远程管理工具:putty

    使用QTP测试文件上传和目录做成是否成功,必须先将文件和目录下载到本地,再作比较.现在下载工具众多,其中putty是最出色的一个,支持linux服务器,这点很重要“免费的”.下面就让我们来看一下吧! ...

  5. oracle随机数

    1.从表中随机取记录 select * from (select * from staff order by dbms_random.random) where rownum < 4 表示从ST ...

  6. 动态标绘演示系统1.4.3(for ArcGIS Flex)

    标绘有API文档啦! 在线浏览 ------------------------------------------------------------------------------------ ...

  7. Qt 用户登录界面

     使用QT创建自己的登录窗口: 主要步骤:    1.窗口界面的绘制     2.沟通数据库进行密码验证 void MainWindow::on_pushButton_clicked() { // 连 ...

  8. Docker vs. Kubernetes vs. Apache Mesos: Why What You Think You Know is Probably Wrong

    Docker vs. Kubernetes vs. Apache Mesos: Why What You Think You Know is Probably Wrong - Mesosphere h ...

  9. (22) java web的struts2框架的使用-struts配置文件

    1,配置文件的引用 struts中配置文件可以有多个,每个模块的包里面都可以单独设立一个struts配置文件. 主的配置文件,放在“src”文件夹下,可以引入其他配置文件,引入方式: <!-- ...

  10. HEX文件格式学习笔记

    这也是一篇学习摘抄:原文地址:http://blog.csdn.net/syrchina/article/details/7004998        为了编写一个可以按照自己的要求进行ISP的程序, ...