NOIp模拟赛Day17 月亮模拟VIII A
来源:互联网 发布:淘宝漫步者那家是正品 编辑:程序博客网 时间:2024/05/23 01:57
题目描述
给出
A 和B ,求:∑d|ABd
输入描述
两个非负整数
A ,B
输出描述
仅一个正整数,表示答案
输入样例
2 3
输出样例
15
样例解释
23=8,而8的因子有1,2,4,8,而1+2+4+8=15
数据范围
A,B≤1012
质因数分解
则
等比数列求和公式或分治计算
#include <cstdio>#include <algorithm>#include <cmath>typedef long long ll;const int N = (int)1e6+5, mo = 9901;ll A, B;int p[N], num[N];ll ans;inline ll pow(ll x, ll n) { x %= mo; ll tmp = x, ret = 1; while(n) { if(n&1) ret = (ret*tmp)%mo; tmp = (tmp*tmp)%mo; n >>= 1; } return ret;}inline ll Sum(ll x, ll n) {return (pow(x,n+1)-1)*pow(x-1,mo-2)%mo;}inline ll Re() { ll x = 0; char ch=getchar(); bool f = 0; for(; ch>'9'||ch<'0'; ch=getchar()) if(ch=='-') f = 1; for(; ch>='0'&&ch<='9'; ch=getchar()) x = (x<<1)+(x<<3)+ch-48; if(f) return -x; return x;}inline void prework() { int lim = (int)sqrt(A); for(int i=2;i<=lim;++i) if(A%i==0) { p[++p[0]] = i; while(A%i==0) { num[p[0]]++; A /= i; } } if(A>1) { p[++p[0]] = A; num[p[0]] = 1; }}int main() { A = Re(); B = Re(); prework(); ans = 1; for(int i=1;i<=p[0];++i) ans = ans*Sum(p[i],num[i]*B)%mo; printf("%lld\n",ans); return 0;}
阅读全文
0 0
- NOIp模拟赛Day17 月亮模拟VIII A
- 【初中部 NOIP提高组 】模拟赛A
- noip模拟赛 双城记
- 【noip模拟赛】密码
- 10.10NOIP模拟赛
- 10.08NOIP模拟赛
- 10.11NOIP模拟赛
- 10.12NOIP模拟赛
- 10.13NOIP模拟赛
- 【NOIP模拟赛】小奇挖矿
- NOIP模拟赛--军训
- 【NOIP模拟赛】数列
- noip模拟赛day8
- 16.1117 NOIP 模拟赛
- [NOIP模拟赛]单词
- [NOIP模拟赛]玻璃杯
- [NOIP模拟赛]游戏
- [NOIP模拟赛]统计
- Struts2基本配置
- Token代码实例
- python 外星人入侵游戏的开发
- 对输入数据的异常处理
- 深度探索C++ 对象模型【第五章2】
- NOIp模拟赛Day17 月亮模拟VIII A
- YTU.3186: 阶乘尾数零的个数
- 欢迎使用CSDN-markdown编辑器
- 按钮防止被重复点击(iOS)
- wget 网页爬虫,网页抓取工具
- 如何理解c和c++的复杂类型声明
- CKEditor整合CKFinder.doc的使用 实现富文本编辑器的整合使用
- JavaScript 弹出框
- 计蒜客区间dp例题 奇怪的二叉树(NOIP2003加分二叉树)