「Poj1845」Sumdiv 解题报告
题面戳这里
啥都别看,只是求
\(a^b\)所有的因数的和
思路:
真没想到!
其实我们可以先将\(a^b\)分解成质因数的
因为\(a^b\)的因数肯定是\(a^b\)的质因数在一定的条件下相乘而成的
然后组合一下
正解!!!
h^ovny:走开!别误导别人!
来一波公式:
\(a=\Pi^n_{i=1}p[i]^{c[i]}\)
\(a^b=\Pi^n_{i=1}p[i]^{c[i]*b}\)
所有因数的和:
\(Ans=\Pi_{i=1}^n\Sigma^{k[i]}_{j=0}p[i]^j\)
\(\Pi\) :读作Pi,是\(\pi\)的大写,表示累乘
\(\Sigma\) :读作Sigma,是\(\sigma\)的大写,表示累加
现在的问题就变成了如何求:
\(\Sigma_{j=0}^{k[i]}\)
展开来写乘:
\((1+p+p^2+p^3+…+p^k)\)
用分治法的思想求解
当k为奇数时:
\(f(k)=1+p+p^2+p^3+…+p^k\)
\(= (1+p+…+p^{\frac k 2})+(p^{\frac k 2+1}+…+p^k)\)
\(= (1+p+…+p^{\frac k 2})+p^{\frac k 2+1}*(1+p+…+p^{\frac k 2})\)
\(= (p^{\frac k 2+1}+1)*(1+p+…+p^{\frac k 2})\)
当k为偶数时
\(f(k)=f(k-1)*p^k\)
然后配合快速幂%9901
正解!!!
人已憔悴
Code:
#include<cstdio>
#include<iostream>
#define ll long long
#define Mod 9901
using namespace std;
ll a[30];
ll s[30];
bool b[10010];
ll n,m;
int t;
ll ans=1;
int read()
{
int s=0;
char c=getchar();
while(!isdigit(c))
c=getchar();
while(isdigit(c))
{
s=(s<<1)+(s<<3)+c-'0';
c=getchar();
}
return s;
}
ll quickPow(ll a,ll b)
{
ll res=1;
while(b>0)
{
if(b&1)
res=(res*a)%Mod;
b>>=1;
a=(a*a)%Mod;
}
return res;
}
ll work(ll p,ll k)
{
if(k==1)
return (p+1)%Mod;
if(k==0)
return 1;
if(k&1)
return work(p,k/2)*(quickPow(p,k/2+1)+1)%Mod;
return ((work(p,k/2-1)*(quickPow(p,k/2)+1))%Mod+quickPow(p,k))%Mod;
}
int main()
{
int i,j;
n=read();m=read();
if(n%2==0)
{
a[++t]=2;
while(n%2==0)
{
s[t]++;
n/=2;
}
}
for(i=3;i*i<=n;i+=2)
if(!b[i])
{
if(n%i==0)
{
a[++t]=i;
while(n%i==0)
{
s[t]++;
n/=i;
}
}
j=i+i;
while(j*j<=n)
{
b[j]=1;
j+=i;
}
}
if(n>1)
{
a[++t]=n;
s[t]=1;
}
for(i=1;i<=t;i++)
ans=(ans*work(a[i],s[i]*m))%Mod;
printf("%lld",ans);
return 0;
}
「Poj1845」Sumdiv 解题报告的更多相关文章
- 「ZJOI2016」旅行者 解题报告
「ZJOI2016」旅行者 对网格图进行分治. 每次从中间选一列,然后枚举每个这一列的格子作为起点跑最短路,进入子矩形时把询问划分一下,有点类似整体二分 至于复杂度么,我不会阿 Code: #incl ...
- 「HNOI2016」树 解题报告
「HNOI2016」树 事毒瘤题... 我一开始以为每次把大树的子树再接给大树,然后死活不知道咋做,心想怕不是个神仙题哦 然后看题解后才发现是把模板树的子树给大树,虽然思维上难度没啥了,但是还是很难写 ...
- 「HNOI2016」序列 解题报告
「HNOI2016」序列 有一些高妙的做法,懒得看 考虑莫队,考虑莫队咋移动区间 然后你在区间内部找一个最小值的位置,假设现在从右边加 最小值左边区间显然可以\(O(1)\),最小值右边的区间是断掉的 ...
- 「HNOI2016」网络 解题报告
「HNOI2016」网络 我有一个绝妙的可持久化树套树思路,可惜的是,它的空间是\(n\log^2 n\)的... 注意到对一个询问,我们可以二分答案 然后统计经过这个点大于当前答案的路径条数,如果这 ...
- 「HAOI2018」染色 解题报告
「HAOI2018」染色 是个套路题.. 考虑容斥 则恰好为\(k\)个颜色恰好为\(c\)次的贡献为 \[ \binom{m}{k}\sum_{i\ge k}(-1)^{i-k}\binom{m-k ...
- 「HNOI2016」最小公倍数 解题报告
「HNOI2016」最小公倍数 考虑暴力,对每个询问,处理出\(\le a,\le b\)的与询问点在一起的联通块,然后判断是否是一个联通块,且联通块\(a,b\)最大值是否满足要求. 然后很显然需要 ...
- 「SCOI2016」围棋 解题报告
「SCOI2016」围棋 打CF后困不拉基的,搞了一上午... 考虑直接状压棋子,然后发现会t 考虑我们需要上一行的状态本质上是某个位置为末尾是否可以匹配第一行的串 于是状态可以\(2^m\)压住了, ...
- 「SCOI2016」妖怪 解题报告
「SCOI2016」妖怪 玄妙...盲猜一个结论,然后过了,事后一证,然后假了,数据真水 首先要最小化 \[ \max_{i=1}^n (1+k)x_i+(1+\frac{1}{k})y_i \] \ ...
- 「SCOI2016」美味 解题报告
「SCOI2016」美味 状态极差无比,一个锤子题目而已 考虑每次对\(b\)和\(d\)求\(c=d \ xor \ (a+b)\)的最大值,因为异或每一位是独立的,所以我们可以尝试按位贪心. 如果 ...
随机推荐
- laravel拓展validator验证
https://blog.csdn.net/zl20117/article/details/53536520 首先,扩展的收个问题是,我的扩展类应该放在哪儿才好呢? 直接在app目录下,建立一个目录: ...
- oralce 分离表和索引
总是将你的表和索引建立在不同的表空间内(TABLESPACES). 决不要将不属于ORACLE内部系统的对象存放到SYSTEM表空间里. 同时,确保数据表空间和索引表空间置于不同的硬盘上. “同时 ...
- g++ 编译单个文件和多个文件
转载:https://www.cnblogs.com/battlescars/p/cpp_linux_gcc.html 1.单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp ...
- 微信公众号无法使用css3的多行省略
解决通过伪元素 .text{ width: 100%; position:relative; overflow:hidden; height: 20px /* overflow : hidden; t ...
- 在SQL中number(16,5)中的16和5 及number( 5,-2)中的5和-2是什么意思?
在SQL中number(16,5)中的16和5 及number( 5,-2)中的5和-2是什么意思? 2018-06-04 19:23:24 xiaonan_IT 阅读数 3672 版权声明:本文 ...
- 排他网关(ExclusiveGateWay)
网关(ExclusiveGateWay) 作者:邓家海2018年3月11日 00:13:25 情景:某一家公司最近在给一个单位做一个财务审批的OA.具体需求是这样的:当部门申请的金额小于一万块的时候, ...
- 【CSS3】3D立方体动画
关于CSS3的3D立方体动画 知识点: 1.每个元素有独立的坐标系 2.坐标系随当前元素的改变而发生改变 3.立方体由静态transform参数构成 4.通过给容器添加动画使立方体运动 效果图: &l ...
- java什么是方法(Method)?
方法是一组为了实现特定功能的代码块的集合.方法在语法上的功能主要有以下两个: ①:结构化代码 将代码按照功能进行组织,使代码的结构比较清晰,容易阅读和修改,也就是程序的可维护性强. ②:减少代码重复 ...
- HDU 5974"A Simple Math Problem"(GCD(a,b) = GCD(a+b,ab) = 1)
传送门 •题意 已知 $a,b$,求满足 $x+y=a\ ,\ LCM(x,y)=b$ 条件的 $x,y$: 其中,$a,b$ 为正整数,$x,y$ 为整数: •题解 关键式子:设 $a,b$ 为正整 ...
- 脑残的设计--- 视图(view)里面包含order by
2015/05/26 更新 今天又遇到了类似问题...尼玛无语了 编码规范啊 !!! 今天有个兄弟跟我说sql跑得太慢了,让我看看.sql如下: SELECT rownum row_num, pv.v ...