链接:

https://www.acwing.com/problem/content/99/

题意:

假设现在有两个自然数A和B,S是AB的所有约数之和。

请你求出S mod 9901的值是多少。

思路:

考虑ab次方的约数可以变为对a进行质数分解,对每个指数的次数乘上b.就构成了ab的约数集合.

同时求和就是每个质数的组合.可以变成对每个质数求起0次到k次的和,将每个和相乘.

求0次到k次的和时可以用分治,将一个和分成两半来求.

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MOD = 9901; int a, b; LL QuickPow(LL a, LL b)
{
LL res = 1;
while (b)
{
if (b&1)
res = (res*a)%MOD;
b >>= 1;
a = (a*a)%MOD;
}
return res;
} LL Sum(LL p, LL c)
{
if (c == 0)
return 1LL;
if (c%2 == 0)
return (((1LL+QuickPow(p, c/2)) * Sum(p, c/2-1))%MOD+QuickPow(p, c))%MOD;
else
return ((1LL+QuickPow(p, (c+1)/2))*Sum(p, c/2))%MOD;
} int main()
{
// cout << Sum(2, 3) << endl;
scanf("%d%d", &a, &b);
LL res = 1;
for (int i = 2;i <= a;i++)
{
int cnt = 0;
while (a%i == 0)
{
cnt++;
a/=i;
}
if (cnt)
res = res*Sum(i, cnt*b)%MOD;
}
if (a == 0)
printf("0\n");
else
printf("%lld\n", res); return 0;
}

Acwing-97-约数之和(整数分解, 递推分治)的更多相关文章

  1. HDU-4651 Partition 整数拆分,递推

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:求n的整数拆为Σ i 的个数. 一般的递归做法,或者生成函数做法肯定会超时的... 然后要 ...

  2. UVa 11077 (循环分解 递推) Find the Permutations

    把{1, 2, 3,,, n}叫做自然排列 本题便是求有多少个n元排列P要至少经过k次交换才能变为自然排列. 首先将排列P看做置换,然后将其分解循环,对于每个长度为i的循环至少要交换i-1次才能归位. ...

  3. AcWing 871. 约数之和

    #include <iostream> #include <algorithm> #include <unordered_map> #include <vec ...

  4. 大概是:整数划分||DP||母函数||递推

    整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...

  5. BZOJ 1677 [Usaco2005 Jan]Sumsets 求和:dp 无限背包 / 递推【2的幂次方之和】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1677 题意: 给定n(n <= 10^6),将n分解为2的幂次方之和,问你有多少种方 ...

  6. HDU acm1028 整数划分 递归问题(递推)

    我们用递归+记忆化的方法来解决普通整数划分问题:定义 f(n,m)为将整数n划分为一系列整数之和,其中加数 最大不超过m. 得到下面的递推关系式: 当n==1 || m==1 只有一种划分,即 1 或 ...

  7. PTA 7-1 整数分解为若干项之和(20 分)

    7-1 整数分解为若干项之和(20 分) 将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=6+1,7=5+2,7=5+1+1,….编程求出正整数N的所有整数分解式子. 输入格式: 每个 ...

  8. POJ 2506 Tiling(递推+大整数加法)

    http://poj.org/problem?id=2506 题意: 思路:递推.a[i]=a[i-1]+2*a[i-2]. 计算的时候是大整数加法.错了好久,忘记考虑1了...晕倒. #includ ...

  9. BNU 12846 LCM Extreme 最小公倍数之和(线性欧拉筛选+递推)

    LCM Extreme Time Limit: 3000ms Memory Limit: 131072KB   This problem will be judged on UVALive. Orig ...

随机推荐

  1. android webkit 初始化流程

    以android 4.2为例 1, android 4.2中 WebViewClassic.java 为 WebView.java的代理类. 2,程序运行后,浏览器首先加载webkit so. Web ...

  2. spring5源码分析系列(一)——spring5框架模块

    spring总共大约20个模块,这些模块被整合在核心容器(Core Container).AOP和设备支持.数据访问及集成.Web.报文发送.Test 6个模块集合. 组成Spring框架的每个模块集 ...

  3. SpringBoot项目打成Jar包时运行

    使用java -jar ***.jar执行jar包的时候,会找jar包中的main()方法. 对于SpringBoot项目的Jar包,在META-INF目录下的MANIFEST.MF文件中,Main- ...

  4. Java基础开篇

    我是一个2019毕业的非计算机的毕业生,从大二开始喜欢上Java直到现在一直都在学习,Brid从小就对计算机感兴趣,可惜高中的时候不懂事,没有规划未来,考上了一所专科学院,然后大一并不能转专业,现在毕 ...

  5. 解决Eclipse发布到Tomcat丢失依赖jar包的问题

    解决Eclipse发布到Tomcat丢失依赖jar包的问题 如果jar文件是以外部依赖的形式导入的.Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的. 可以通过Eclipse在 ...

  6. CSS(上)

    目录 CSS(上) 什么是CSS? CSS的优点 CSS的引入方式 行内样式 内部样式 外部样式 CSS的两大特性 CSS选择器 基本选择器 组合选择器 更多选择器 选择器的优先级 CSS(上) 什么 ...

  7. createTextNode() 方法和createTextNode()方法

    <!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程 ...

  8. Neo4j/Cypher: All paths between two nodes with a relationship property filter

    解决方案一 I am trying to perform a query to retrieve all paths between two nodes a and b in which all th ...

  9. 使用parquet-hadoop.jar包解析hive parquet文件时,遇到FIXED_LEN_BYTE_ARRAY转换为Decimal 以及 INT96转换为timestamp问题

    在使用parquet-hadoop.jar包解析parquet文件时,遇到decimal类型的数据为乱码,具体解决方法如下: 使用parquet-Hadoop.jar解析httpfs服务提供的parq ...

  10. WPF最小化窗体后激活函数显示不了窗体

    WPF最小化窗体后激活函数显示不了窗体 今天测试小哥给我提了一些问题,其中一个问题是这样的,点击web端的一个链接,是能启动本地的一个应用程序的,如果本地应用程序已启动(通过tcp进程间通信),那么应 ...