当前位置: 首页 > news >正文

约数之和其中数论的作用

文章目录

  • AcWing
    • 1.约数之和
      • 快速幂模板
      • 质因数分解函数prime
      • 等比数列求和函数sum
      • 主函数
      • 完整代码
      • 知识补充(数论)
        • 约数和公式

AcWing

1.约数之和

在这里插入图片描述

对于这一题,只能说不会,其中牵扯到了数论中的约数之和的问题

首先是对于该题的分解的过程与思路
在这里插入图片描述

快速幂模板

ll qmod(ll a, ll b) {ll sum = 1;while (b) {if (b & 1) sum = sum * a % mod; // 二进制位为1时,累乘结果a = a * a % mod; // 底数平方,准备下一位计算b >>= 1; // 右移一位,处理下一个二进制位}return sum;
}

在这里插入图片描述

质因数分解函数prime

void prime(ll x) {for (ll i = 2; i <= x / i; i++) { if (x % i == 0) { while (x % i == 0) { primes[i]++; // 统计质因数i的指数x /= i; }}}if (x > 1) primes[x]++; // 处理剩余大质数
}

在这里插入图片描述

等比数列求和函数sum

ll sum(ll p, ll k) {if (k == 1) return 1; // 递归边界:指数为1时,和为1(对应等比数列首项1)if (k % 2 == 0) { // 偶数项:1 + p + p² + ... + p^k = (1 + p^(k/2)) * (1 + p + ... + p^(k/2 - 1)) return (qmod(p, k / 2) + 1) * sum(p, k / 2) % mod; }// 奇数项:1 + p + ... + p^k = (1 + p^(k-1)) + (1 + p + ... + p^(k-2)) return (qmod(p, k - 1) + sum(p, k - 1)) % mod; 
}

推理过程:
在这里插入图片描述

在这里插入图片描述

主函数

void solve() {ll a, b;cin >> a >> b;prime(a); // 分解A的质因数ll ans = 1;for (auto i : primes) { ll p = i.first, k = i.second * b; // 质因数p,对应指数c*Bans = ans * sum(p, k + 1) % mod; // 累乘各质因数的等比数列和}if (a == 0) ans = 0; // 特殊情况:A=0时,0^B(B>0)无意义,结果为0cout << ans << endl;
}

在这里插入图片描述

在这里插入图片描述

完整代码

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) // 加速输入输出
#define ll long long
#define endl '\n'const ll N=1e6+10;
const ll mod=9901;          // 结果取模 9901
unordered_map<ll,ll> primes; // 存储质因数分解结果// 快速幂:计算 a^b % mod
ll qmod(ll a, ll b) {ll res = 1;while(b) {if(b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}// 质因数分解:将 x 分解为质因数及其指数
void prime(ll x) {for(ll i=2; i<=x/i; i++) {while(x % i == 0) {primes[i]++;x /= i;}}if(x > 1) primes[x]++; // 处理剩余的质因数
}// 等比数列求和:计算 1 + p + p^2 + ... + p^(k-1) % mod
ll sum(ll p, ll k) {if(k == 1) return 1;if(k % 2 == 0) {return (qmod(p, k/2) + 1) * sum(p, k/2) % mod;}return (qmod(p, k-1) + sum(p, k-1)) % mod;
}// 主函数:计算 A^B 的约数之和 % 9901
void solve() {ll a, b;cin >> a >> b;prime(a);       // 分解 A 的质因数ll ans = 1;for(auto [p, c] : primes) {ll k = c * b; // A^B 中质因数 p 的指数ans = ans * sum(p, k + 1) % mod; // 累乘每个质因数的等比数列和}if(a == 0) ans = 0; // 特殊处理 A=0 的情况cout << ans << endl;
}signed main() {IOS;solve();return 0;
}

知识补充(数论)

约数和公式

在这里插入图片描述

核心原理:

er-images%5Cimage-20250715122000954.png&pos_id=img-HQAiwtKS-1752553555556)

例子:

在这里插入图片描述

http://www.lryc.cn/news/588741.html

相关文章:

  • 【前端】Vue 3 页面开发标准框架解析:基于实战案例的完整指南
  • SpringBoot 项目搭建的 4 种常用方式,从入门到实践
  • Android 多语言适配(I18n)
  • ICCV 2025满分论文:一个模型实现空间理解与主动探索大统一
  • 原型继承(prototypal inheritance)的工作原理
  • AOP简化MyBatis分页:高效自动化方案
  • 解决 Node.js 版本不兼容问题:深入理解 `yarn install --ignore-engines`
  • 【前后端】Node.js 模块大全
  • 2025.7.15总结
  • Linux 环境下安装 Node.js v16.13.0 完整指南
  • kimi-k2模型配置参数
  • Linux操作系统从入门到实战(九)Linux开发工具(中)自动化构建-make/Makefile知识讲解
  • CSS从入门到起飞!零基础小白的必修课
  • 【Java】JUC并发(线程的方法、多线程的同步并发)
  • 微信小程序:在ios中border边框显示不全
  • 飞睿UWB超宽带定位测距技术,数字钥匙重塑智能生活,高精度厘米级定位无感解锁
  • 公网ip到服务器流程
  • 2025年最新香港站群服务器租用价格参考
  • 从零开始的云计算生活——第三十二天,四面楚歌,HAProxy负载均衡
  • 【工程篇】07:如何打包conda环境并拷贝到另一台服务器上
  • Racknerd服务器Ubuntu
  • Datawhale 25年7月组队学习coze-ai-assistant Task1学习笔记:动手实践第一个AI Agent—英伦生活口语陪练精灵
  • 阿里云ssh证书过期,如果更换并上传到服务器
  • 三十二、【核心功能改造】数据驱动:重构仪表盘与关键指标可视化
  • 数学金融与金融工程:学科差异与选择指南
  • uniapp 微信小程序Vue3项目使用内置组件movable-area封装悬浮可拖拽按钮(拖拽结束时自动吸附到最近的屏幕边缘)
  • Springboot儿童认知图文辅助系统6yhkv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • LED 照明应用提供高性价比方案?会是你的首选吗?
  • Unity音游开发全指南:模板与免费资源高效构建节奏游戏
  • labview关于OOP