hdu1852

Beijing 2008

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/65535 K (Java/Others)

Total Submission(s): 502 Accepted Submission(s): 172

Problem Description
As we all know, the next Olympic Games will be held in Beijing in 2008. So the year 2008 seems a little special somehow. You are looking forward to it, too, aren't you? Unfortunately there still are months to go. Take it easy. Luckily
you meet me. I have a problem for you to solve. Enjoy your time.



Now given a positive integer N, get the sum S of all positive integer divisors of 2008N. Oh no, the result may be much larger than you can think. But it is OK to determine the rest of the division of S by K. The result is kept as M.



Pay attention! M is not the answer we want. If you can get 2008M, that will be wonderful. If it is larger than K, leave it modulo K to the output. See the example for N = 1,K = 10000: The positive integer divisors of 20081 are 1、2、4、8、251、502、1004、2008,S
= 3780, M = 3780, 2008M % K = 5776.


Input
The input consists of several test cases. Each test case contains a line with two integers N and K (1 ≤ N ≤ 10000000, 500 ≤ K ≤ 10000). N = K = 0 ends the input file and should not be processed.
Output
For each test case, in a separate line, please output the result.
Sample Input
1 10000
0 0

分析:

// 这题主要求S

// 结论: S = (251^(n+1)-1) * (2^(3n+1)-1) / 250 

// 是两个等比数列和相乘 

// 

// 推理:

// 2008 = 2^3 * 251 

// 所以 2008^N 有 3N 个 2 和 N 个251 

// 所有仅由2组成的因子有

// 2^0 2^1 2^2 ... 2^(3N)

// 设集合 C = {2^0, 2^1, 2^2 ...,2^(3N)};

// SUM(C) =  2^(3n+1)-1



// 跟251组合产生的因子有

// 251^0 * C

// 251^1 * C

// ...

// 251^N * C



// 所有因子和为:

// S = (251^(n+1)-1))/250 * (2^(3n+1)-1)



// 计算S%K:

// S 很大, 不能保存在普通的数据类型中, 需要直接计算S%K

// 因为S有个分母250, 设 S = X/250

// 则S%K = (X/250)%K = (X%(250*K))/250

// 变成先求余数再除法的形式

程序:

#include"stdio.h"
#include"string.h"
__int64 pow(__int64 a,__int64 k,__int64 m)
{
__int64 b=1;
while(k>=1)
{
if(k&1)
b=b*a%m;
a=a*a%m;
k=k/2;
}
return b;
}
int main()
{
__int64 n,k,ans,m,p1,p2,s;
while(scanf("%I64d%I64d",&n,&k),k||n)
{
p1=pow(2,3*n+1,k*250)-1;
p2=(pow(251,n+1,k*250)-1);
s=(p1*p2)%(250*k);
m=s/250;
//printf("%I64d %I64d %I64d\n",p1,p2,m);
ans=pow(2008,m,k);
printf("%I64d\n",ans);
}
}

整数快速幂hdu(1852)的更多相关文章

  1. HDU 2817 A sequence of numbers 整数快速幂

    A sequence of numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  2. 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)

    题目链接 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...

  3. 题解报告:hdu 1576 A/B(exgcd、乘法逆元+整数快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n ...

  4. 数论 --- 费马小定理 + 快速幂 HDU 4704 Sum

    Sum Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=4704 Mean: 给定一个大整数N,求1到N中每个数的因式分解个数的 ...

  5. 组合数(Lucas定理) + 快速幂 --- HDU 5226 Tom and matrix

    Tom and matrix Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=5226 Mean: 题意很简单,略. analy ...

  6. HDU 6395 分段矩阵快速幂 HDU 6386 建虚点+dij

    http://acm.hdu.edu.cn/showproblem.php?pid=6395 Sequence Time Limit: 4000/2000 MS (Java/Others)    Me ...

  7. 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)

    题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...

  8. POJ1995(整数快速幂)

    http://poj.org/problem?id=1995 题意:求(A1^B1 + A2^B2 + .....Ah^Bh)%M 直接快速幂,以前对快速幂了解不深刻,今天重新学了一遍so easy ...

  9. 快速幂 HDU 1061 Rightmost Digit *

    Rightmost Digit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

随机推荐

  1. thinkphp 使用原生mysql语句 联合查询

    <?php class DelAction extends Action { public function ml(){ // 实例化一个空模型,没有对应任何数据表 $Dao = M(); // ...

  2. relation 关联模型

    关联关系必然有一个参照表,例如:有一个员工档案管理系统项目,这个项目要包括下面的一些数据表:基本信息表.员工档案表.部门表.项目组表.银行卡表(用来记录员工的银行卡资料).这些数据表之间存在一定的关联 ...

  3. bcm53344 gpio驱动分析

    /********************************************************************************* * 1.查看代码是在vim下,使用 ...

  4. windows 开启端口

    场景: 解决方法: 选中入站规则,右键选择新建入站规则: 然后 选择“允许连接”,点“下一步”. 效果: 连接成功.

  5. peek函数的用法

    #include <iostream> /* run this program using the console pauser or add your own getch, system ...

  6. 【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?

    接口可以继承接口.抽象类可以实现(implements)接口,抽象类可以继承具体类.抽象类中可以有静态的main方法. 问:  抽象类是否可继承实体类 (concrete class) 答: 抽象类是 ...

  7. 学习使用资源文件[11] - DLL 中的资源文件

      本例将把一张 bmp 图片, 以资源文件的方式嵌入 dll, 然后再调用. 第一步: 建一个 DLL 工程, 如图: 然后保存, 我这里使用的名称都是默认的. 第二步: 建一个资源原文件, 如图: ...

  8. 最全Java学习路线图——Java学习指南

    准备篇 适用/适合人群:适合基础小白 目标:掌握JavaSE. ●技术点小节: 1.开发工具的安装配置的介绍 2.JDK安装 3.DOS环境编程 4.Eclipse的安装使用 ●JAVA基础 1.基本 ...

  9. error:2014 Commands out of sync; you can't run this command now

    如下错误: 分析原因: 前端ajax请求后台,共用同一个链接. 搜索别人的解决方案:http://blog.csdn.net/grass_ring/article/details/3499402 用m ...

  10. Ant多渠道批量打包

    由于我现在已经用更好的gradle了,所以关于ant我只是简单的讲一讲,如果想学gradle请到我的博客中查看 http://www.cnblogs.com/uncle2000 ant的配置请自行百度 ...