HDU 1452 Happy 2004(因子和的积性函数)
题意 : 给你一个X,让你求出2004的X次方的所有因子之和,然后对29取余。
思路 : 原来这就是积性函数,点这里这里这里,这里讲得很详细。
在非数论的领域,积性函数指所有对于任何a,b都有性质f(ab)=f(a)f(b)的函数。
在数论中的积性函数:对于正整数n的一个算术函数 f(n),若f(1)=1,且当a,b互质时f(ab)=f(a)f(b),在数论上就称它为积性函数。
若对于某积性函数 f(n),就算a, b不互质,也有f(ab)=f(a)f(b),则称它为完全积性的。
s(6)=s(2)*s(3)=3*4=12;
s(20)=s(4)*s(5)=7*6=42;
再看 s(50)= 1+2+5+10+25+50=93=3*31=s(2)*s(25),s(25)=1+5+25=31.
这在数论中叫积性函数,当gcd(a,b)=1时 s(a*b)=s(a)*s(b);
如果p是素数 : s(p^n)=1+p+p^2+...+p^n= (p^(n+1)-1) /(p-1)-----其实就是等比数列求和公式 (1)
再看本题 :
计算因子和 s(2004^X) mod 29 ,
2004=2^2 *3 *167
2004^X=4^X * 3^X *167^X
s(2004^X) ) = (s(2^2X))) * (s(3^X))) * (s(167^X))) 而 167%29=22
s(2004^X) ) = (s(2^2X))) * (s(3^X))) * (s(22^X)))
a=s(2^2X)=(2^(2X+1)-1) //根据(1)
b=s(3^X)= (3^(X+1)-1)/2 //根据(1)
c=s(22^X)= (22^(X+1)-1)/21 //根据(1)
%运算法则
1. (a*b) %p= ( a%p) *(b%p) 乘法的
2. (a/b) %p= ( a *b^(-1)%p) 除法的
s(2004^X)=(2^(2X+1)-1)* (3^(X+1)-1)/2 *(22^(X+1)-1)/21
(a*b)/c %M= a%M* b%M * inv(c)
c*inv(c)=1 %M 模为1的所有数 inv(c)为最小可以被c整除的
inv(2)=15, inv(21)=18 2*15=1 mod 29, 18*21=1 mod 29
s(2004^X)=((2^(2X+1)-1)* (3^(X+1)-1)/2 *(22^(X+1)-1)/21)mod 29 =((2^(2X+1)-1)* (3^(X+1)-1)*15 *(22^(X+1)-1)*18)mod29
b^(-1)是 b的逆元素(%p)即上面的inv
2的逆元素是15 ,因为2*15=30 % 29=1 % 29
21的逆元素是18 ,因为21*18=378% 29 =1 % 29
因此
a=(powi(2,2*x+1,29)-1)% 29;
b=(powi(3,x+1,29)-1)*15 % 29;
c=(powi(22,x+1,29)-1)*18 % 29;
ans=(a*b)% 29*c % 29;
//
#include <stdio.h>
#include <math.h>
#include <iostream> using namespace std ; int multimod(int a,int n)//乘方模
{
int res = ;
while(n)
{
if(n & )
{
res *= a ;
res %= ;
}
a *= a ;
a %= ;
n >>= ;
}
return res ;
}
int main()
{
int x ;
while(~scanf("%d",&x))
{
if(x == ) break ;
int a = (multimod(,*x+)-) ;
int b = (multimod(,x+)-)* ;
int c = (multimod(,x+)-)* ;
printf("%d\n",(a*b*c)%) ;
}
return ;
}
HDU 1452 Happy 2004(因子和的积性函数)的更多相关文章
- HDU 1452 Happy 2004 (逆元+快速幂+积性函数)
G - Happy 2004 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Subm ...
- hdu1452 Happy 2004(规律+因子和+积性函数)
Happy 2004 题意:s为2004^x的因子和,求s%29. (题于文末) 知识点: 素因子分解:n = p1 ^ e1 * p2 ^ e2 *..........*pn ^ en 因子 ...
- 数学--数论--Hdu 1452 Happy 2004(积性函数性质+和函数公式+快速模幂+乘法逆元)
Consider a positive integer X,and let S be the sum of all positive integer divisors of 2004^X. Your ...
- HDU 1452 Happy 2004(因数和+费马小定理+积性函数)
Happy 2004 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- hdu 1452 Happy 2004
因子和: 的因子是1,2,3,6; 6的因子和是 s(6)=1+2+3+6=12; 的因子是1,2,4,5,10,20; 20的因子和是 s(20)=1+2+4+5+10+20=42; 的因子是1,2 ...
- Hdu 1452 Happy 2004(除数和函数,快速幂乘(模),乘法逆元)
Problem Description Considera positive integer X,and let S be the sum of all positive integer diviso ...
- HDU1452Happy 2004(高次幂取模+积性函数+逆元)
题目意思:2004^x的所有正因数的和(S)对29求余:输出结果: 原题链接 题目解析:解析参照来源:点击打开链接 因子和 6的因子是1,2,3,6; 6的因子和是s(6)=1+2+3+6=12; 2 ...
- HDU1452:Happy 2004(积性函数)(因子和)
题意 给出\(x\),求\(2004^x\)的所有因子和 分析 \(2004=2*2*3*167\) 则\(2004^x\)=\(2^{2x}*3^x*167^x\) s[\(2004^x\)]=s[ ...
- 积性函数,线性筛入门 HDU - 2879
HDU - 2879HeHe 题意:He[N]为[0,N−1]范围内有多少个数满足式子x2≡x (mod N),求HeHe[N]=He[1]×……×He[N] 我是通过打表发现的he[x]=2k,k为 ...
随机推荐
- vector C++ 详细用法
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vec ...
- Tabbar视图切换,返回上一视图,添加item
前面有一篇博文iOS学习之Tab Bar的使用和视图切换 这是在AppDelegate里使用Tabbar,这样的程序打开就是TabbarView了,有时候我们需要给程序做一些帮助页面,或者登录页面,之 ...
- 【风马一族_Android】 图能
---------------------------------- 第一次 名称:相片查看器 ---------------------------------- 通过3D.自动播放幻灯片.旋转.跳 ...
- SecureCRT远程控制ubuntu
如果你拥有两台电脑一台是ubuntu,另一台是笔记本电脑,而你又想在远程控制你的ubuntu,那么SecureCRT就可以用了. 1:首先在你的ubuntu电脑上安装SSH服务 :apt-get i ...
- Android模拟器中安装APK文件(转)
1.平台环境:Win7系统, 安装Eclipse,android4.0(sdk) 2.随便创建个工程(HelloWorld),结果如下: 3.运行(Run HelloWorld),启动模拟器,如下所示 ...
- IntelliJ IDEA+Tomcat+Nginx运行git项目
1.克隆Git项目到本地 (1)设置Git工具路径:file>settings>Version Control>Git (2)设置GitHub账户:file>settings& ...
- devpress控件属性说明表
XtraEditors 库中所有控件的公共功能 全部都可以绑定数据: 全部都可以独立使用或用于由 Developer Express 提供的容器控件(XtraGrid.XtraVerticalGrid ...
- Oracle11g数据库安装
一.安装流程截图(没截图部分都默认) 服务器如果不是单独的数据库服务器,内存分配大概1/4即可. 二.安装后,表空间,以及创建账号脚本 sqlplus / as sysdba 登陆数据库,执行 /*第 ...
- [译]Redis大冒险
原文:ALCA in Redis-land 一篇对使用Redis在NoSQL的世界中冒险之旅的总结. The legs of our journey 像每次出发一样,先对我们这次的旅程路线做个介绍: ...
- Ubuntu下PHP开发配置(新增redis、sphinx、sqlserver相关配置)
由于本人比较懒,所以一般都是用xampp的直接拿来改的…………(当然xampp中一般php版本都是比较新的用的过程中请大家注意哈,可能会和老版本冲突) 此次除了使用xampp外,还扩展了sphinx, ...