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 ...
随机推荐
- 基于GDAL的栅格图像空间插值预处理
转自 基于GDAL的栅格图像空间插值预处理——C语言版 基于GDAL的栅格图像预处理 前言 栅格数据和矢量数据构成空间数据的主要来源,怎样以开源方式读取并处理这些空间数据?目前有多种开源支持包,这里只 ...
- 在Studio中使用Access数据库时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”
错误提示:
- eclipse导入maven工程步骤
转自:http://jingyan.baidu.com/article/cbf0e500a6e3252eaa2893c1.html 感谢作者 步骤一 : 选择 “Import”操作 有两个途径可以选择 ...
- Python中文GBK编码解决实例
http://eatsalt.blog.163.com/blog/static/879402662009420508748/ #coding:gbk l=['我'.decode('gbk'),'我'. ...
- Cubieboard搭建Hadoop指南
1.刷固件 出厂的Cubieboard是Android系统,需要Linux系统安装Hadoop,到此网址下载: http://dl.cubieboard.org/software/a20-cubiet ...
- 蚂蜂窝VS穷游最世界-自由行类App分析
很多其它内容请关注博客: http://www.china10s.com/blog/? p=150 一.产品概述 体验环境: 机型:iPhone 6 型号:64G版 系统:iOS9.2 蚂蜂窝APP版 ...
- webpack-Module Resolution(模块解析)
模块解析(Module Resolution) resolver 是一个库(library),用于帮助找到模块的绝对路径.一个模块可以作为另一个模块的依赖模块,然后被后者引用,如下: import f ...
- jpa删除根据对象删除失败,报Removing a detached instance 错
引用:https://blog.csdn.net/zhanggnol/article/details/6307936 常用数据库表的删除办法,一般都会在DAO类中提供delete.如下例: publi ...
- hive计算网页停留时长
hive表结构例如以下: create table pv_user_info( session_id string, user_id string, url string, starttime big ...
- Linux下kill命令的学习,(主要根据man手册进行的翻译)
名字 kill -终止一个进程 格式 kill [-s signal | -p] [--] pid .. ...