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 ...
随机推荐
- 前端开发数据mock神器 -- xl_mock
1.为什么要实现数据 mock 要理解为什么要实现数据 mock,我们可以提供几个场景来解释, 1.现在的开发很多都是前后端分离的模式,前后端的工作是不同的,当我们前端界面已经完成,但是后端的接口迟迟 ...
- 从日志文件解决ArcGIS Server性能低下问题的步骤(1)
日志级别和结构 http://www.cnblogs.com/fortoday/archive/2011/03/30/2000348.html ArcGIS Server日志文件分为几个记录级别: 无 ...
- C# 中用DES 对称Key,IV 加密,前端crypto.js 解密
1.服务器端代码 #region ========加密======== /// <summary> /// 加密 /// </summary> /// <param na ...
- 浅谈JavaScript的面向对象程序设计(三)
前面已经对JavaScript的面向对象程序设计作了简单的介绍,包括了对象的属性.对象的工厂模式.构造函数和原型等.通过介绍,这些创建对象的方法依然有不少优化和改进的地方. 组合使用构造函数模式和原型 ...
- Linux中的mysql.redis
1,Linux上的mysql MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源 ...
- go 泛型 Go中不包含的特性
人Andrei Alexandrescu:“Go所走的路线在一些问题上持有极其强硬和死板态度,这些问题有大有小.在比较大的方面,泛型编程被严格控制,甚至贬低到只有"N"个字:有关泛 ...
- (16)ServletContext详解
1,作用: ServletContext对象 ,叫做Servlet的上下文对象.表示一个当前的web应用环境.一个web应用中只有一 ...
- HttpServlet容器响应Web客户流程
HttpServlet容器响应Web客户请求流程如下: 1)Web客户向Servlet容器发出Http请求: 2)Servlet容器解析Web客户的Http请求: 3)Servlet容器创建一个Htt ...
- UESTC 982质因子分解
读入一个自然数,将nn分解为质因子连乘的形式输出. Input 有多组测试数据.输入的第一行是整数TT(0<T≤10000),表示测试数据的组数.每一组测试数据只有一行,包含待分解的自然数nn. ...
- wirte function in powershell
https://github.com/dahlbyk/posh-git/blob/master/src/Utils.ps1#L102 https://docs.microsoft.com/en-us/ ...