[HDOJ1492]Happy 2004(数论,快速幂,逆元,积性函数)

题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1452

题意:求2004^n的所有因子和。

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <iomanip>
 4 #include <cstring>
 5 #include <climits>
 6 #include <complex>
 7 #include <fstream>
 8 #include <cassert>
 9 #include <cstdio>
10 #include <bitset>
11 #include <vector>
12 #include <deque>
13 #include <queue>
14 #include <stack>
15 #include <ctime>
16 #include <set>
17 #include <map>
18 #include <cmath>
19 using namespace std;
20 #define fr first
21 #define sc second
22 #define cl clear
23 #define BUG puts("here!!!")
24 #define W(a) while(a--)
25 #define pb(a) push_back(a)
26 #define Rint(a) scanf("%d", &a)
27 #define Rll(a) scanf("%I64d", &a)
28 #define Rs(a) scanf("%s", a)
29 #define Cin(a) cin >> a
30 #define FRead() freopen("in", "r", stdin)
31 #define FWrite() freopen("out", "w", stdout)
32 #define Rep(i, len) for(int i = 0; i < (len); i++)
33 #define For(i, a, len) for(int i = (a); i < (len); i++)
34 #define Cls(a) memset((a), 0, sizeof(a))
35 #define Clr(a, x) memset((a), (x), sizeof(a))
36 #define Full(a) memset((a), 0x7f7f7f, sizeof(a))
37 #define lrt rt << 1
38 #define rrt rt << 1 | 1
39 #define pi 3.14159265359
40 #define RT return
41 #define lowbit(x) x & (-x)
42 #define onecnt(x) __builtin_popcount(x)
43 typedef long long LL;
44 typedef long double LD;
45 typedef unsigned long long ULL;
46 typedef pair<int, int> pii;
47 typedef pair<string, int> psi;
48 typedef pair<int, int> pll;
49 typedef map<string, int> msi;
50 typedef vector<int> vi;
51 typedef vector<int> vl;
52 typedef vector<vl> vvl;
53 typedef vector<bool> vb;
54
55 const LL mod = 29;
56 LL n;
57
58 LL mul(LL x, LL q) {
59     LL ret = 1;
60     while(q) {
61         if(q & 1) ret = (ret * x) % mod;
62         q >>= 1;
63         x = (x * x) % mod;
64     }
65     return ret;
66 }
67
68 LL exgcd(LL a, LL b, LL &x, LL &y) {
69     if(b == 0) {
70         x = 1;
71         y = 0;
72         return a;
73     }
74     else {
75         LL ret = exgcd(b, a%b, x, y);
76         LL tmp = x;
77         x = y;
78         y = tmp - a / b * y;
79         return ret;
80     }
81 }
82
83 LL iv(LL a) {
84     LL x, y;
85     exgcd(a, mod, x, y);
86     return (x % mod + mod) % mod;
87 }
88
89 signed main() {
90     // FRead();
91     while(cin >> n && n) {
92         cout << ((mul(2, 2*n+1)-1)%mod)*((mul(3, n+1)-1)*iv(2)%mod)*((mul(167,n+1)-1)*iv(166)%mod)%mod << endl;
93     }
94     RT 0;
95 }
时间: 2024-10-30 00:23:38

[HDOJ1492]Happy 2004(数论,快速幂,逆元,积性函数)的相关文章

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(

数论 - 线性筛法与积性函数

首先以求1000000以内的素数为例来探讨筛法 Eratosthenes筛法(埃拉托斯特尼筛法) 时间复杂度:O(N*loglogN) 空间复杂度:O(N) 代码: #include <map> #include <set> #include <list> #include <cmath> #include <deque> #include <queue> #include <stack> #include <bit

常见积性函数(转自百科)

前面做hdu1452 用过积性函数这个东西...刚才遇到又不会了.所以弄一点资料提醒一下自己 在非数论的领域,积性函数指所有对于任何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),则称它为完全积性的.[1] s(6)=s(2)*s(3)=3*4=12; s(20)=

Happy 2004(快速幂+乘法逆元)

Happy 2004 问题描述 : Consider a positive integer X,and let S be the sum of all positive integer divisors of 2004^X. 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 2

HDU 5685 Problem A | 快速幂+逆元

Problem A Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 463    Accepted Submission(s): 162 Problem Description 度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了一个很长很长的字符串.现在麻烦来了,他忘记了原来的字符串都是什么,神奇的是他竟然记得原来那些字符串的

数论及其应用——积性函数问题

在学习快速幂的过程中,我们曾遇到过因子和函数σ(n),曾提及该函数是积性函数,不过当时并没有给出证明.在这篇文章中,我们将针对数论中的积性函数问题,讨论更多的模型. 首先我们先给出一些定义. 定义1:定义在所有正整数上的函数成为算数函数. 定义2:算术函数f如果满足对于任意两个互素的正整数m.n,均由f(mn) = f(m)f(n),就称其为积性函数.如果对于任意的m.n满足上述性质,则称其为完全积性函数. 下面我们基于此来讨论欧拉函数φ(n). 首先,该函数的含义表示不超过n且与n互素的正整数

HDU 1452 Happy 2004 求2004^n的所有因子和 积性函数应用

题目链接:点击打开链接 百度个题解:点击打开链接 6的因子是1,2,3,6; 6的因子和是 s(6)=1+2+3+6=12; 20的因子是1,2,4,5,10,20; 20的因子和是 s(20)=1+2+4+5+10+20=42; 2的因子是1,2; 2的因子和是 s(2)=1+2=3; 3的因子是1,3; 3的因子和是 s(3)=1+3=4; 4的因子和是 s(4)=1+2+4=7; 5的因子和是 s(5)=1+5=6; s(6)=s(2)*s(3)=3*4=12; s(20)=s(4)*s(

HDU2879 HeHe 数论积性函数

题目名字有点搓,做题时没做出来,学长他们做出了,发现跟网上题解的思路没太大区别,网上所有题解的分析也都转自同一个地方,看样子这道题目不是那么好想的,没办法按照解析画了半天,计算器按了半天,理解了,自己敲出来了,觉得值得留念,打算再刷几道这样的 转自:http://blog.csdn.net/kksleric/article/details/8096914 定义:对于正整数n的一个算术函数 f(n),若f(1)=1,且当a,b互质时f(ab)=f(a)f(b),在数论上就称它为积性函数.若对于某积

浅谈一类积性函数的前缀和(转载)

本文转自:http://blog.csdn.net/skywalkert/article/details/50500009 另外,莫比乌斯反演和杜教筛其他可转到 http://blog.leanote.com/post/totziens/%E8%8E%AB%E6%AF%94%E4%B9%8C%E6%96%AF%E5%8F%8D%E6%BC%94 写在前面 笔者在刷题过程中遇到一些求积性函数前缀和的问题,其中有一类问题需要在低于线性时间复杂度的算法,今天就来浅析一下这类问题的求解方法,当作以后讲课

积性函数筛法

积性函数筛法 很多常用的数论函数都是积性函数,而在题目中,我们常常需要线性(甚至更高)的筛法. 对于积性函数,我们可以在筛素数的基础上稍加修改,即可完成线性筛. 首先,注意到积性函数的特点: \[ f(xy)=f(x)\times f(y) \] 而可以线性筛的积性函数,需要知道以下两个式子的快速求法: \[ f(p)=?\quad f(p^k)=?\\p\in prime \] 其中, \(f(p)\) 大多是直接定义,\(f(p^k)\) 大多是递归定义. 我们来回忆一下素数筛的过程: in