Happy 2004

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Description

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 2004^1 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^x的所有的因子和然后 mod 29。 一开始没有头绪,后面百度了下,N的因子和是积性函数,所以就开始用积性函数的方法解题。 积性函数 : 当gcd(a,b)=1时 s(a*b)=s(a)*s(b);
如果p是素数[或素数取X模后的数] s(p^n)=1+p+p^2+...+p^n= (p^(n+1)-1) /(p-1)
/*/ /*/ 2004=2*2*3*167 质因子 /*/ /*/ σ(2004^x)=σ(2^2x)*σ(3^x)*σ(167^x) mod 29 积性函数。 /*/ /*/ 167%29 = 22 /*/ /*/ σ(2004^x)=σ(2^2x)*σ(3^x)*σ(22^x) mod 29 /*/ /*/ σ(2^2x)= (2^(2x+1)-1)/(2-1)=(2^(2x+1)-1)/1 /*/ /*/ σ(3^x) = (3^(x+1)-1)/(3-1) =(3^(x+1)-1) /2 /*/ /*/ σ(22^x)=(22^(x+1)-1)/(22-1)=(22^(x+1)-1)/21 /*/ /*/ σ(2004^x)=(2^(2x+1)-1)*(3^(x+1)-1)/2*(22^(x+1)-1)/21 /*/ /*/ 1/2 对于29的逆元x=15 1=2*15 -29*1 /*/ /*/ 1/21对于29的逆元x=18 1=21*18-29*13 /*/ /*/ σ(2004^x)=((2^(2x+1)-1)*(3^(x+1)-1)*15*(22^(x+1)-1)*18)%29 /*/ /*/ 然后开始用快速幂求解。 /*/ /*/ 这个题目的重点在在于这个数学推导过程。 /*/ // AC代码:
#include"cmath"
#include"string"
#include"cstdio"
#include"cstring"
#include"iostream"
#include"algorithm"
using namespace std;
typedef long long LL; LL mod_pow(LL x,LL y,LL p) {
LL rt=1;
LL t=x;
while(y) {
if(y&1)rt=(rt*t)%p;
t=t*t%p;
y>>=1;
}
return rt;
} int main() {
LL x,ans;
while(~scanf("%I64d",&x)) {
if(x==0)break;
/*/ σ(2004^x)=((2^(2x+1)-1)*(3^(x+1)-1)*15*(22^(x+1)-1)*18)%29 /*/
ans=1;
ans*=(mod_pow(2,2*x+1,29)-1)%29;
ans*=(mod_pow(3,x+1,29)-1)*15%29;
ans*=(mod_pow(22,x+1,29)-1)*18%29;
printf("%I64d\n",ans%29);
}
return 0;
}

  

ACM: Happy 2004-数论专题-因子求和-快速幂的更多相关文章

  1. 从BZOJ2242看数论基础算法:快速幂,gcd,exgcd,BSGS

    LINK 其实就是三个板子 1.快速幂 快速幂,通过把指数转化成二进制位来优化幂运算,基础知识 2.gcd和exgcd gcd就是所谓的辗转相除法,在这里用取模的形式体现出来 \(gcd(a,b)\) ...

  2. [原]sdut2605 A^X mod P 山东省第四届ACM省赛(打表,快速幂模思想,哈希)

    本文出自:http://blog.csdn.net/svitter 题意: f(x) = K, x = 1 f(x) = (a*f(x-1) + b)%m , x > 1 求出( A^(f(1) ...

  3. Description has only two Sentences(欧拉定理 +快速幂+分解质因数)

    Description has only two Sentences Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...

  4. ACM&OI 基础数论算法专题

    ACM&OI 基础数学算法专题 一.数论基础 质数及其判法 (已完结) 质数的两种筛法 (已完结) 算数基本定理与质因数分解 (已完结) 约数与整除 (已完结) 整除分块 (已完结) 最大公约 ...

  5. ACM数论-快速幂

    ACM数论——快速幂 快速幂定义: 顾名思义,快速幂就是快速算底数的n次幂.其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高. 原理: 以下以求a的b次方来介绍: 把b转换成 ...

  6. ACM学习历程—HDU5667 Sequence(数论 && 矩阵乘法 && 快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=5667 这题的关键是处理指数,因为最后结果是a^t这种的,主要是如何计算t. 发现t是一个递推式,t(n) = c ...

  7. ACM数论之旅2---快速幂,快速求a^b((ノ`Д´)ノ做人就要坚持不懈)

    a的b次方怎么求 pow(a, b)是数学头文件math.h里面有的函数 可是它返回值是double类型,数据有精度误差 那就自己写for循环咯 LL pow(LL a, LL b){//a的b次方 ...

  8. acm数论之旅(转载) -- 快速幂

    0和1都不是素数,也不是合数. a的b次方怎么求 pow(a, b)是数学头文件math.h里面有的函数 可是它返回值是double类型,数据有精度误差 那就自己写for循环咯 LL pow(LL a ...

  9. Hdu 1452 Happy 2004(除数和函数,快速幂乘(模),乘法逆元)

    Problem Description Considera positive integer X,and let S be the sum of all positive integer diviso ...

随机推荐

  1. java的final用法

    转自:http://blog.163.com/maomaoyu_1012/blog/static/19060130520116269329894/ 1.         修饰基础数据成员的final ...

  2. SQL SERVER 索引之聚集索引和非聚集索引的描述

    索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度. 索引包含由表或视图中的一列或多列生成的键. 这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关 ...

  3. PHP_Memcache函数详解

    memcache函数所有的方法列表如下: Memcache::add – 添加一个值,如果已经存在,则返回false Memcache::addServer – 添加一个可供使用的服务器地址 Memc ...

  4. hdu 4033 2011成都赛区网络赛 余弦定理+二分 **

    二分边长,判断最后内角和是否为2pi,注意l与r的选取,保证能组成三角形 #include<cstdio> #include<iostream> #include<alg ...

  5. WPF线程(Step2)——BackgroundWorker

    在WPF中第二个常用的线程处理方式就是BackgroundWorker. 以下是BackgroundWorker一个简单的例子. public partial class MainWindow : W ...

  6. Codeforces Beta Round #95 (Div. 2) D.Subway

    题目链接:http://codeforces.com/problemset/problem/131/D 思路: 题目的意思是说给定一个无向图,求图中的顶点到环上顶点的最短距离(有且仅有一个环,并且环上 ...

  7. oc精简笔记

    首先如果是想在终端学习的话,以下内容是必须的,如果是直接使用xcode的请随意: operating system      os       X ter   终端的缩写 ls      显示目录文件 ...

  8. android 瀑布流

    我们还是来看一款示例: 看起来很像我们的gridview吧,不过又不像,因为item大小不固定的,看起来是不是别有一番风味,确实如此.就如我们的方角图形,斯通见惯后也就出现了圆角.下面我简单介绍下实现 ...

  9. Struts2文件上传下载

    Struts2文件上传 Struts2提供 FileUpload拦截器,用于解析 multipart/form-data 编码格式请求,解析上传文件的内容,fileUpload拦截器 默认在defau ...

  10. 【SQL Sever】实现SQL Sever的发布。订阅。 双机热备

    实现SQL Sever的发布和订阅  最大的好处就是: 可以实现读写分离,增删改操作在主数据库服务器上进行,查询在备份数据库服务器上进行.一方面提高软件执行效率,另一方面也减轻主库压力. 本次实现发布 ...