happy 2004

    • 题目
  • 积性函数
  • 求因数和
  • 费马小定理
    • 定理
    • 取模
      • 加减法
      • 乘法
      • 除法
        • 结论
        • 推导
  • 快速幂取模
    • 快速幂
    • 快速幂取模
  • 题目代码
    • 坑点

题目

Consider a positive integer X,and let S be the sum of all positive integer divisors of 2004X. Your job is to determine S modulo 29 (the rest of the division of S by 29).

Take X = 1 for an example. The positive integer divisors of 20041 are 1, 2, 3, 4, 6, 12, 167, 334, 501, 668, 1002 and 2004. Therefore S = 4704 and S modulo 29 is equal to 6.
Input
The input consists of several test cases. Each test case contains a line with the integer X (1 <= X <= 10000000).
A test case of X = 0 indicates the end of input, and should not be processed.
Output
For each test case, in a separate line, please output the result of S modulo 29.
Sample Input
1
10000
0
Sample Output
6
10

积性函数

本题中,2004的约数和S(2004x)S(2004^x)S(2004x)就是一个积性函数
积性函数:
p=a×b⇒S(p)=S(a)×S(b)p = a \times b\Rightarrow S(p) = S(a) \times S(b)p=a×b⇒S(p)=S(a)×S(b)
pn=an×bn⇒S(pn)=S(an)×S(bn)p^n = a^n\times b^n\Rightarrow S(p^n) = S(a^n) \times S(b^n)pn=an×bn⇒S(pn)=S(an)×S(bn)
a和b均为质数

求因数和

S(pn)=S(p^n) =S(pn)= pn+1−1p−1{p^{n + 1} - 1}\over{p - 1}p−1pn+1−1​
ppp是质数

费马小定理

定理

假如是一个整数aaa
,ppp是一个质数,ap−aa^p - aap−a那么是ppp的倍数,可以表示为
ap%p=aa^p \% p = aap%p=a
如果aaa不是ppp的倍数,这个定理也可以写成
ap−1%p=1a^{p - 1}\%p = 1ap−1%p=1
在本题中,费马小定理的应用为:
aaa与ppp互质时,
有ap−1%p=1a^{p - 1} \% p =1ap−1%p=1
再由同余定理:1%p=11\%p = 11%p=1
可得ap−1%p=1%p=1a^{p-1}\%p = 1\%p = 1ap−1%p=1%p=1

取模

加减法

(a±b)%p=a%p±b%p(a \pm b)\%p = a\%p \pm b\%p(a±b)%p=a%p±b%p

乘法

(a×b)%p=(a%p)×(b%p)%p(a \times b) \% p = (a\%p) \times (b \% p) \%p(a×b)%p=(a%p)×(b%p)%p

除法

//不能直接分配了,要转化成乘法再做

结论

(ab)%c=(a×bc−2)%c(\frac{a}{b})\% c = (a \times b^{c - 2}) \% c(ba​)%c=(a×bc−2)%c

推导

(ab)%c=(a×b−1)%c=(a×b−1×1)%c(\frac{a}{b})\% c = (a \times b^{-1}) \% c = (a \times b^{-1} \times 1 ) \%c(ba​)%c=(a×b−1)%c=(a×b−1×1)%c
(a×b−1×bc−1)%c=(a×bc−2)%c(a \times b^{-1} \times b^{c - 1}) \% c = (a \times b^{c - 2}) \% c(a×b−1×bc−1)%c=(a×bc−2)%c

快速幂取模

快速幂

求xnx^nxn

int pow(int x,int n)
{int ans = 1,base = x;while(n){if(n & 1)ans *= base;base *= base;n >>= 1;}return ans;
}

快速幂取模

求xn%px^n\%pxn%p

int pow_mod(int x, int n, int p)
{int base = x, ans = 1;while(n){if(n & 1) ans *=  base;base = (base * base) % p;n >>= 1;}return ans % p;
}

题目代码

#include <stdio.h>
long long int pow_mod(int x,int b);
int cal(int x);
int main()
{int x[100],s[100];int counter = 0,i;scanf("%d",x);while(x[counter] != 0){s[counter] = cal(x[counter]) % 29;//printf("%d\n",s[counter]);counter++;scanf("%d",&x[counter]);}for(i = 0;i < counter;i++)printf("%d\n",s[i]);return 0;
}
int cal(int x)
{int a,b,c;a = (pow_mod(2, 2 * x + 1) - 1 ) % 29;b = (pow_mod(3, x + 1) - 1) * pow_mod(2, 27) % 29;c = (pow_mod(22, x + 1) - 1) * pow_mod(21, 27) % 29;return a * b * c % 29;
}
long long int pow_mod(int x,int b)
{long long int base = x, ans = 1;while(b){if(b & 1) ans *=  base;base = (base * base) % 29;b >>= 1;}return ans % 29;
}

坑点

1.取模那里要用long long int,用int 可能会不够长,我用int的时候会出现WA,改成long long int 就accepted了(不过我没想明白为什么不够长,base是不断取模的,按道理来讲,也不会太大啊?)

  • 我也不知道这道题happy不happy,反正我是不怎么happy了。。。
    总结了多位大佬们的博客,加上自己的一些理解,写了一份给自己看的总结,看不懂就去看看大佬们写的博客吧。这个博客主要还是写给我自己看的,阅读性不太强。

Happy 2004(积性函数、快速幂取模、费马小定理、求因数和)相关推荐

  1. 洛谷 [P1593 因子和] {快速幂+费马小定理求逆元+求解质因子} 奋斗的珂珂~

    题目描述 输入两个整数 a 和 b,求 aba^bab 的因子和. 由于结果太大,只要输出它对 9901 取模的结果. 输入格式 仅一行,为两个整数 a和 b. 输出格式 输出一行一个整数表示答案对 ...

  2. 快速幂-Jxc军训 (费马小定理+求概率)(2021-08-17)

    Jxc军训 题目 在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不爽. Jxc将天空看做一个nn的矩阵,此时天上有m朵云,这些云会随机分布在m个不同 ...

  3. Detachment HDU - 5976(数学+费马小定理求逆元+前缀和前缀积)

    题意:给定一个数,让你分成互不相等的n个数(n为自然数),使这些数的乘积最大,输出最大乘积. 题解:本文参考传送门 首先:那就是不能分出1来,因为1乘任何数都是它本身,而因为分出了1,另一部分也变小了 ...

  4. 第十四届华中科技大学程序设计竞赛 B Beautiful Trees Cutting【组合数学/费马小定理求逆元/快速幂】...

    链接:https://www.nowcoder.com/acm/contest/106/B 来源:牛客网题目描述 It's universally acknowledged that there're ...

  5. HDU4549 M斐波那契数列(矩阵快速幂+费马小定理)

    Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) ...

  6. 51nod 1513-3的幂的和(费马小定理+快速幂)

    题目: 求:3^0 + 3^1 +...+ 3^(N) mod 1000000007 Input 输入一个数N(0 <= N <= 10^9) Output 输出:计算结果 Sample ...

  7. 牛客网j题(快速幂取模阶乘处理贝塔函数费马定理)

    传送门 求(贝塔函数运用) Γ(x)=∫01(x−x2)ndx=(n!)2/(2n+1)!\Gamma(x) = \int_0 ^1\ (x-x^2)^{n}dx=(n!)^2/(2n+1) !Γ(x ...

  8. 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)

    先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...

  9. 大数取模运算,快速幂取模运算

    1.快速幂取模 http://www.cnblogs.com/yinger/archive/2011/06/08/2075043.html 快速幂取模就是在O(logn)内求出a^n mod b的值. ...

最新文章

  1. springboot 整合redis 实现KeySpaceNotification 键空间通知
  2. python简单代码画曲线图教程-Python绘制折线图和散点图的详细方法介绍(代码示例)...
  3. 七牛云徐晶:低延迟互动时代看好WebRTC和SRT
  4. CAN总线技术 | 物理层03 - 采样点
  5. forms角色验证,以普通用户身份登陆管理页面先弹出警告信息窗口
  6. 导出excel 数据取一次合理还是分页取合理_一张报表模板替代数百张Excel表格,用它让报表工作更轻松...
  7. java面向对象相关选择题_java面向对象练习题一
  8. matlab学习笔记1
  9. eclipse没有java web,Java-我的Eclipse IDE中缺少Web服务选项
  10. Atitit 工作流之道 艾提拉著 BPM,即业务流程管理 目录 1. 流程入门 思想 历史 分类 1 第二篇 第2章 初识工作流 2 1.1. 2.3 工作流技术相关规范  2.3.1 W
  11. 蓝桥杯单片机学习之数码管
  12. 单位邮箱格式注册,如何申请单位邮箱?
  13. Python地理地图可视化:plotly连接mapbox多个地理经纬度中心点line+marker
  14. 9V降压5V低功耗恒压稳压芯片,大电流3A方案和LDO
  15. Win7系统解决无法打开任务管理器
  16. 互联网思维之极致思维
  17. 【简易教程】使用3dmax利用网上免费人物模型来制作人物动作动画
  18. P4294 [WC2008]游览计划
  19. 教师节祝福短信:送给有个性的老师
  20. 模板设计模式的两种方式

热门文章

  1. 文件上传-01基础及过滤方式
  2. Geodetic集合(c++)
  3. RIA系列技术讲座(1)——在RIA世界里混个脸熟
  4. 【C语言学习04】跳出嵌套循环
  5. 基于DeepFace模型设计的人脸识别软件
  6. Java8 Lambda表达式语法和示例
  7. android横竖屏切换动画,Android应用怎么实现屏幕横竖屏切换功能
  8. 游戏时间 (10 分)
  9. 篮球总是提示服务器维护中,范特西篮球经理3月7日服务器维护公告
  10. MAQ/BWA introduction by Li Heng