今天做两道数学题被虐哭了哦凑,全是查了题解才解决的

题意:

给两个整数A,B,令S为所有可以整除A^B的数的和,求S%9901

Input

The only line contains the two natural numbers A and B, (0 <= A,B <= 50000000)separated by blanks.

Output

The only line of the output will contain S modulo 9901.

正常一点的想法都是把A分解为质因数,根据整数的唯一分解定理,可以把它写成(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn)的形式,pi均为素数。

我的思路到这就没了,因为我想跑程序来求各种组合,但其实可以用数学来轻松解决。

A的所有因数的和可以写成(1+p1+p1^2+p1^3+...p1^k1) * (1+p2+p2^2+p2^3+….p2^k2) * (1+p3+ p3^3+…+ p3^k3) * .... * (1+pn+pn^2+pn^3+...pn^kn),虽说不熟悉这个,但是脑海深处还是有铲子讲过的感觉。

这样就可以运用同余定理轻松解决了,只要有足够快的算法。

最后一个问题就来了,k值应该要乘以b,这样就会非常大,直接用等比数列求和公式会溢出(除法不能用同余定理),生求累乘O(N)仍然会超时。

然后就要二分,把1+p1+p1^2+p1^3+...p1^k1这样的数列和像快速幂那样二分求解,每次缩小一半,因为等比所以很容易实现,这样提高了效率,还可以运用同余定理。

最后一直RE,十分诡异,后来发现是没加特判,题目很奇葩的数据范围包括0,包括0^0这种奇怪的东西都出现了

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
#define mxn 10000
#define mod 9901
long long a,b;
long long rec[mxn],cnt[mxn];
int cur;
void set(long long in){cur=0;for(long long i=2;i<=sqrt(in+0.0);++i)    if(in%i==0){rec[cur]=i;cnt[cur]=0;while(in%i==0){++cnt[cur];in/=i;}++cur;}if(in>1){rec[cur]=in;cnt[cur++]=1;}
}
long long quick_power(long long x,int n){if(n==1) return x%mod;long long tem=quick_power(x,n/2);if(n%2)  return tem*tem%mod*x%mod;return tem*tem%mod;
}
long long power(int id,int n){if(n==1)    return (rec[id]+1)%mod;if(n%2==0){long long tem=quick_power(rec[id],n/2);return (power(id,n/2)*(1+tem)%mod-tem+mod)%mod;}return (power(id,n-1)+quick_power(rec[id],n))%mod;
}
int main(){while(scanf("%lld%lld",&a,&b)!=EOF){if(!a){puts("0");continue;}if(!b){puts("1");continue;}set(a);long long ans=1;for(int i=0;i<cur;++i){long long tem=power(i,cnt[i]*b);ans=(ans*tem)%mod;}printf("%lld\n",ans);}return 0;
}

POJ_1845_Sumdiv_各种数学相关推荐

  1. 群论中的拉格朗日定理(子群的阶必然能整除群阶---数学

    前言:仅个人小记.本文记录的证明逻辑上不具有流畅性,主要是在一开始不流畅,拉格朗日神乎其技地引入了一个等价关系,进而实现了整个定理的证明,目前我没能给出拉格朗日是如何想到引入该等价关系. 最后给出推论 ...

  2. 通俗理解条件熵-数学

    就是决策树里面选划分属性用到的计算 条件熵越小表示划分之后各个集合越纯净 前面我们总结了信息熵的概念通俗理解信息熵 - 知乎专栏,这次我们来理解一下条件熵. 我们首先知道信息熵是考虑该随机变量的所有可 ...

  3. 内积和外积的物理意义-数学

    内积和外积的物理意义 Persistently关注 2018.07.31 14:28:46字数 277阅读 6,276 向量的内积 ab=ab cos(θ) 向量a和b的长度之积再乘以它们之间的夹角的 ...

  4. Ramsey定理数学

    https://blog.csdn.net/qq_41551359/article/details/84036876 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上 ...

  5. 数学上各种空间概念的关系图

    https://blog.csdn.net/cc1949/article/details/79744519 数学上有各种空间,概念容易混淆,为了记忆,整理出一张关系图. 目前不清楚无限维的内积空间是什 ...

  6. 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive的内置函数 一.数学函数 1. 取整函数: round ...

  7. js函数语法:ASCII 码的相互转换,字符串操作,数学计算

    ASCII 码的相互转换 for (let i = 'a'.charCodeAt(); i <= 'z'.charCodeAt(); i++) {a.push(String.fromCharCo ...

  8. 机器学习数学 — 初等函数求导

    本文摘自 GitChat 李烨老师 [机器学习极简入门课]课程 1. 数学知识速查手册 机器学习常用微积分知识速查手册 机器学习常用线性代数知识速查手册 2. 初等函数求导公式

  9. Python学习笔记17:标准库之数学相关(math包,random包)

    前面几节看得真心累.如今先来点简单easy理解的内容. 一 math包 math包主要处理数学相关的运算. 常数 math.e   # 自然常数e math.pi  # 圆周率pi 运算函数 math ...

最新文章

  1. MinkowskiBroadcast广播
  2. 数组元素替换_LeetCode 题解 | 189. 旋转数组
  3. 编译-speex For iOS静态库
  4. 寒假每日一题(入门组)【week7 完结】
  5. [Qt教程] 第40篇 网络(十)WebKit初识
  6. 邮政银行贷款迟还4个小时就造成信用逾期,如何解决?
  7. redis php方案,Redis三种部署方案图文详解
  8. 7-56 互评成绩 (25 分) (排序题)
  9. Python3中如何做的自定义模块的引用?
  10. 51单片机彩灯控制器的设计(含源代码、编译过的 HEX 文件以及仿真图)
  11. 电商后台管理系统——权限管理模块
  12. pyecharts之参透神剧人物关系
  13. c语言打出的王字图形图形,C语言编程宝典(王大刚) 3 关键字和标识符
  14. 计算机各配置性能如何区分,怎么测试电脑性能?判断电脑性能主要看什么?
  15. python zip(*zipped)的疑问
  16. 轴承故障诊断经典模型pytorch复现(一)——WDCNN
  17. 关于在13个球中寻找不同的问题解答
  18. 软件开发项目经理岗位职责
  19. mysql 不让读的锁_MySQL锁问题(脏读、不可重复读、幻读)
  20. Python中仅跳出本次遍历或循环继续进入下一次遍历或循环continue语句

热门文章

  1. Django 图片上传
  2. lan8742a怎么用_LAN8742A
  3. 3D EXPERIENCE DraftSight的协作能力
  4. 计算机开机选择用户界面,win7系统每次开机都会出现选择操作系统界面的设置办法...
  5. nyist oj nyoj 865
  6. 崔毅东 C++程序设计入门(下) 第9单元:白公曾咏牡丹芳,一种鲜妍独“异常” 笔记
  7. python爬取微博热搜神器,微博历史数据
  8. 第一章、Ansible的详细介绍与安装
  9. 那是无英勇的生活战士用生命换来的
  10. Android 框架问题分析案例 - 谁杀了桌面?