原题:http://acm.hdu.edu.cn/showproblem.php?pid=1452
等比数列求和公式:(之前忘记了。+ =)
奇性函数:
在数论中,积性函数是指一个定义域为正整数n 的算术函数f(n),有如下性质:f(1) = 1,且当a 和b 互质时,f(ab) = f(a) f(b)。
若一个函数f(n) 有如下性质:f(1) = 1,且对两个随意正整数a 和b 而言,不只限这两数互质时,f(ab) = f(a)f(b) 都成立,则称此函数为完全积性函数。
在数论以外的其他数学领域中所谈到的积性函数通常是指完全积性函数。
(n): 除数函数,n的所有正因子的k次幂之和,当中k可为任何复数。在特例中有:
(n) = d(n) - n的正因子数目
(n) =
(n)
- n的所有正因子之和可见本题目为:除数函数,不完全奇性函数。
const
int
INF=0x3f3f3f3f;
另外参见了大神的代码,发现最大值可以这么表示。
原因如下:http://blog.csdn.net/dr5459/article/details/8211408
有如下性质:
1、当gcd(a,b)=1时,s[a*b]=s[a]*s[b].
2、当p为素数时,s[p^n]=p^0+p^1+……+p^n=(p^(n+1)-1)/(p-1)
3、(a * b ) / c % M = a % M * b % M * inv(c);
其中inv(c)即满足 (c*inv(c))%M=1的最小整数,这里M=29
inv(1)= 1, inv(2)=15,inv(166)=18;
S((2^2)^x) * S(3^x) * S(167 ^ n) = S(2004^n);
//============================================================================
// Name : Math_hdu1452.cpp
// Author : vit
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MOD 29
using namespace std;
int pow(int a,int b)
{
int ans=1;
while(b)
{
if(b&1)//judge odd or even
ans = (ans * a) % MOD;
a = a * a % MOD;
b=b>>1;
}
return ans;
}
int main() {
int x;
int a, b, c;
while(cin >> x && x){
a = (pow(2,2*x + 1) - 1) * 1 % MOD;
b = (pow(3,x + 1) - 1) * 15 % MOD;
c = (pow(167, x + 1) - 1) * 18 % MOD;
cout << a * b * c % MOD << endl;
}
return 0;
}
hdu1452 Happy 2004,布布扣,bubuko.com
原文:http://blog.csdn.net/svitter/article/details/23205327