poj1845(二分快速求等比数列模M和)
| Time Limit: 1000MS | Memory Limit: 30000K | |
| Total Submissions: 17039 | Accepted: 4280 |
Description
Input
Output
Sample Input
2 3
Sample Output
15
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
using namespace std;
#define MOD 9901 typedef long long ll;
//a^b%mod 快速幂
long long Quk_Mul(long long a,long long b,long long mod)
{
long long qsum=;
while(b)
{
if(b&) qsum=(qsum*a)%mod;
b>>=;
a=(a*a)%mod;
}
return qsum;
}//二分计算1+a+a^2+...+a^b long long Bin_Find(int a,long long b)
{
if(b==) return ;
if(b%==)
{
return ( Bin_Find(a, b/-)+Bin_Find(a, b/-)*Quk_Mul(a, b/+, MOD)+Quk_Mul(a, b/, MOD) )%MOD;
}
else
{
return ( Bin_Find(a, b/)+Quk_Mul(a, b/+, MOD)*Bin_Find(a, b/) )%MOD;
}
} long long GetDivsorSum(int x,int b)
{
long long sum=;
for(int i=;i*i<=x;i++)
{
long long tmp=;
if(x%i == )
{
while(x%i==)
{
x/=i;
tmp++;
}
//假设
tmp *= b;
sum *= Bin_Find(i,tmp);
sum%=MOD;
}
} if(x>)//在这里x可能等于 9901
{
long long tmp=;
tmp *= b;
int i=x;
sum *= Bin_Find(i, tmp);
sum%=MOD;
}
return sum;
} int main(int argc, const char * argv[]) {
int a,b;
// for(int i=2;i<9901;i++)
// if(9901%i==0) printf("%d\n",i);
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a==)
{
printf("0\n");
}
else if(b==)
printf("1\n");
else
cout<<(GetDivsorSum(a,b)%MOD+MOD)%MOD<<endl;
/*
long long tmp=1;
long long ans=0;
for(int i=0;i<b;i++) tmp*=a;
for(int j=1;j<=tmp;j++)
{
if(tmp%j==0) ans=ans+j;
ans%=MOD;
}
cout<<ans<<endl;
*/
}
return ;
}
//求一个数的因子和。因为求逆元不是很方便,所以采用二分求等比数列和
poj1845(二分快速求等比数列模M和)的更多相关文章
- hdu 1005 Number Sequence(矩阵连乘+二分快速求幂)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1005 代码: #include<iostream> #include<stdio.h&g ...
- 九度OJ 1085 求root(N, k) -- 二分求幂及快速幂取模
题目地址:http://ac.jobdu.com/problem.php?pid=1085 题目描述: N<k时,root(N,k) = N,否则,root(N,k) = root(N',k). ...
- 二分求幂/快速幂取模运算——root(N,k)
二分求幂 int getMi(int a,int b) { ; ) { //当二进制位k位为1时,需要累乘a的2^k次方,然后用ans保存 == ) { ans *= a; } a *= a; b / ...
- POJ 1845 Sumdiv [素数分解 快速幂取模 二分求和等比数列]
传送门:http://poj.org/problem?id=1845 大致题意: 求A^B的所有约数(即因子)之和,并对其取模 9901再输出. 解题基础: 1) 整数的唯一分解定理: 任意正整数都有 ...
- POJ1845 数论 二分快速取余
大致题意: 求A^B的所有约数(即因子)之和,并对其取模 9901再输出. 解题思路: 应用定理主要有三个: (1) 整数的唯一分解定理: 任意正整数都有且只有一种方式写出其素因子的乘积表达式. ...
- CodeForces Round #191 (327C) - Magic Five 等比数列求和的快速幂取模
很久以前做过此类问题..就因为太久了..这题想了很久想不出..卡在推出等比的求和公式,有除法运算,无法快速幂取模... 看到了 http://blog.csdn.net/yangshuolll/art ...
- NYOJ--102--次方求模(快速求幂取模)
次方求模 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一 ...
- The 2018 ACM-ICPC China JiangSu Provincial Programming Contest快速幂取模及求逆元
题目来源 The 2018 ACM-ICPC China JiangSu Provincial Programming Contest 35.4% 1000ms 65536K Persona5 Per ...
- HDU6128 二次剩余/二次域求二次剩余解/LL快速乘法取模
LINK 题意:求满足模p下$\frac{1}{a_i+a_j}\equiv\frac{1}{a_i}+\frac{1}{a_j}$的对数,其中$n,p(1\leq n\leq10^5,2\leq p ...
随机推荐
- Tomcat部署多个应用时日志文件路径相同引起的问题
今天给客户部署新系统,一个 前台应用,一个后台应用,由于用的是同一个架子,日志文件路径也没改,所以两个应用的日志文件是同一个文件,这样应用运行时,就会出现只能访问一个应用的情况,如果两个应用同时访问, ...
- vertex buffer 数据结构 如何读vb的memory pool
vertex attribute (declaration) vertex stream (memory pool) 这两部分 通过attribute 里面对memory的描述把两部分 vbo ...
- Oracle Study之-AIX6.1构建Oracle 10gR2 RAC(4)
Oracle Study之-AIX6.1构建Oracle 10gR2 RAC(4) 一.安装CRS补丁 在安装CRS之前,须要安装补丁p6718715_10203_AIX64-5L,否则在安装时会出现 ...
- hive 导入csv文件
创建hive表: create table table_name( id string, name string, age string ) row format serde 'org.apache. ...
- 针对ecshop错误404页面的优化
在ecshop系统当中,比如你随意将商品详细页面的地址中的ID修改为一个不存在的商品ID,ecshop会自动跳转到首页.ecshop在这方面做得非常的差,甚至导致了很多的站不被搜索引擎收录.最模板提供 ...
- PHP防止sql注入-JS注入
一:为了网站数据安全,所有和数据库操作的相关参数必须做相关过滤,防止注入引起的网站中毒和数据泄漏 1.PHP自带效验函数 mysql_real_escape_string() 函数转义 SQL 语句中 ...
- 简易选项卡&&简易JS年历
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JAVA Eclipse如何设置点击按钮切换图片
右击图片文件夹,新建一个Android XML文件 设置文件的名称,注意这个新建的xml文件就是会被用作按钮的background属性的,所以名字不要太奇怪,设置Root Element为sele ...
- vector list map 遍历删除指定元素
#include <stdio.h> #include <stdint.h> #include <vector> #include <list> #in ...
- Android学习(二) 标签滚动跳过
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...