Lightoj 1054 - Efficient Pseudo Code
题目连接:
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的更多相关文章
- 1054 - Efficient Pseudo Code
1054 - Efficient Pseudo Code PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: ...
- LightOj1054 - Efficient Pseudo Code ( 求n的m次方的因子和 )
题目链接:http://lightoj.com/volume_showproblem.php?problem=1054 题意:给你两个数n和m, 求n^m的所有因子和,结果对1000000007求余; ...
- 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 ...
- 专题[vjudge] - 数论0.1
专题[vjudge] - 数论0.1 web-address : https://cn.vjudge.net/contest/176171 A - Mathematically Hard 题意就是定义 ...
- Oracle Applications Multiple Organizations Access Control for Custom Code
档 ID 420787.1 White Paper Oracle Applications Multiple Organizations Access Control for Custom Code ...
- 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 ...
- CV code references
转:http://www.sigvc.org/bbs/thread-72-1-1.html 一.特征提取Feature Extraction: SIFT [1] [Demo program][SI ...
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- IT软件开发常用英语词汇
Aabstract 抽象的abstract base class (ABC)抽象基类abstract class 抽象类abstraction 抽象.抽象物.抽象性access 存取.访问access ...
随机推荐
- 【Nginx】请求上下文
上下文与全异步web服务器的关系 请求上下文指在一个请求的处理过程中,把一些关键的信息保存下来的类似struct这样的结构体.每个http模块都可以有自己的上下文结构体,一般都是在刚开始处理请求时在内 ...
- DosBox 报错 this program requires dosxnt.exe to be in your path
也就是少了dosxnt.exe文件,能够上网搜索下载,把dosxnt 拷贝到你挂截文件夹下就能够执行 Dosxnt文件下载
- JavaSE----API之集合(Collection、List及其子类、Set及其子类、JDK1.5新特性)
5.集合类 集合类的由来: 对象用于封装特有数据,对象多了须要存储:假设对象的个数不确定.就使用集合容器进行存储. 集合容器由于内部的数据结构不同,有多种详细容器.不断的向上抽取,就形成了集合框架. ...
- 初探swift语言的学习笔记十一(performSelector)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35842441 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...
- Android Service 不被杀死并提高优先级
Android Service 不被杀死有两种思路,一种是将APP设置为系统应用.还有一种是增强service的生命力.即使屏幕背光关闭时也能执行. 因为设置为系统应用须要root.所以一般使用后一种 ...
- win系统下启动linux上的kafka集群及使用
一.首先在win系统下C:\Windows\System32\drivers\etc文件夹中hosts文件加入例如以下内容: 10.61.6.167 slaves1 10.61.6.168 slave ...
- 欧莱雅浅谈OC中方法调用的顺序中的Category
OC特有的分类Category,依赖于类.它可以在不改变原来的类内容的基础上,为类增加一些方法.分类的使用注意: (1)分类只能增加方法,不能增加成员变量: (2)在分类方法的实现中可以访问原来类中的 ...
- [英语学习]王秒同学《21天TED英语精练团》
第一个分享: Chris Anderson的TED's secret to great public speaking(英音). There's no single formula for a gre ...
- HEX文件格式学习笔记
这也是一篇学习摘抄:原文地址:http://blog.csdn.net/syrchina/article/details/7004998 为了编写一个可以按照自己的要求进行ISP的程序, ...
- HTML表单常用标签
名称 用例 备注 文本输入框 <input type="text" name="uname" value="" ...