题目链接:http://codeforces.com/contest/1228/problem/C

题解:给定一个函数f,g,题目有描述其中的表达式含义和两者之间的关系。

然后计算:

首先把给定的x用唯一分解定理分解出素因子

因为在1-n中,n/p(素因子)的值就是其1-n中有多少个数能整除p,n/p^2就是有多少个数能被p^2整除,所以做一次循环,每次n=n/p,直到n为0,sum记录每次n除以p的个数,就是1-n中能整除p的次方的数的幂指数之和了。

举个例子,45和3,n=45,p=3,第一次循环45/3=15,sum+=15 表示其中1-45中有15个数能整除3,n = 15,p,=3; n/p=5,表示1-45中有5个数能被3^2整除,sum+=5,n = 5,p=3 ; 5/3=1,表示1-45有1个数能整除3^3,sum+=1;

最终sum = 16

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<set>
#include<map>
#include<vector>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
ll mod = 1e9+7;
ll x,n;
ll quick_pow(ll a,ll b){ //调用快速幂算法
ll res = 1;
while(b){
if(b&1) res = res*a%mod;
a = a*a%mod;
b>>=1;
}
return res;
}
ll cal_g(ll y,ll p){
ll m = y,sum = 0;
while(m){
sum+=m/p; //计算素因子在1-n的"贡献"
m/=p;
}
return quick_pow(p,sum);
}
int main(){
ios::sync_with_stdio(false);
cin>>x>>n;
ll ans = 1;
vector<ll> v;
for(int i=2;i*i<=x;++i){
if(x%i==0){ //唯一分解定理
ans = ans * cal_g(n,i)%mod;
while(x%i==0){
x/=i;
}
}
}
if(x!=1) ans = ans*cal_g(n,x)%mod;
cout<<ans;
return 0;
}

ac代码:

codeforces C. Primes and Multiplication(快速幂 唯一分解定理)的更多相关文章

  1. CF #589 (Div. 2)C. Primes and Multiplication 快速幂+质因数

    题目链接:https://www.luogu.org/problem/CF1228C 问题可以转化为:求质数 $p$ 在 $1\sim n$ 中的每个数中的次幂之和. 因为 $p$ 是一个质数,只能由 ...

  2. codeforces magic five --快速幂模

    题目链接:http://codeforces.com/contest/327/problem/C 首先先算出一个周期里面的值,保存在ans里面,就是平常的快速幂模m做法. 然后要计算一个公式,比如有k ...

  3. CodeForces - 691E Xor-sequences 【矩阵快速幂】

    题目链接 http://codeforces.com/problemset/problem/691/E 题意 给出一个长度为n的序列,从其中选择k个数 组成长度为k的序列,因为(k 有可能 > ...

  4. codeforces 696C C. PLEASE(概率+快速幂)

    题目链接: C. PLEASE time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  5. Codeforces 963 A. Alternating Sum(快速幂,逆元)

    Codeforces 963 A. Alternating Sum 题目大意:给出一组长度为n+1且元素为1或者-1的数组S(0~n),数组每k个元素为一周期,保证n+1可以被k整除.给a和b,求对1 ...

  6. Codeforces 691E题解 DP+矩阵快速幂

    题面 传送门:http://codeforces.com/problemset/problem/691/E E. Xor-sequences time limit per test3 seconds ...

  7. 【codeforces 623E】dp+FFT+快速幂

    题目大意:用$[1,2^k-1]$之间的证书构造一个长度为$n$的序列$a_i$,令$b_i=a_1\ or\ a_2\ or\ ...\ or a_i$,问使得b序列严格递增的方案数,答案对$10^ ...

  8. Codeforces 691E Xor-sequences(矩阵快速幂)

    You are given n integers a1,  a2,  ...,  an. A sequence of integers x1,  x2,  ...,  xk is called a & ...

  9. Codeforces 954 dijsktra 离散化矩阵快速幂DP 前缀和二分check

    A B C D 给你一个联通图 给定S,T 要求你加一条边使得ST的最短距离不会减少 问你有多少种方法 因为N<=1000 所以N^2枚举边数 迪杰斯特拉两次 求出Sdis 和 Tdis 如果d ...

随机推荐

  1. 题解 AT4556 【12/22】

    题目传送门. ___________ 主要思路 我们可以使用\(C++\)语言中的\(string\)字符串来解. 先定义一个字符串\(s\),并输入\(s\). string s; cin>& ...

  2. OCM 12c | OCM 12c Update | OCM 11g (Retiring Dec 31, 2019) | OCM 11g考试延期至2020.04.30

     OCM 全球考试安排时间表 View A Worldwide OCM Schedule Oracle Database 12c Certified Master Exam (OCM) OCM 12c ...

  3. 141.内置上下文处理器debug、request、auth、messages、media、static、csrf

    上下文处理器 上下文处理器可以返回一些数据,在全局模板中都可以使用,比如登录后的用户数据,在很多页面中都需要使用,那么我们就可以方在上下文处理器中,就没有必要在每个视图中返回这个对象了. 在setti ...

  4. DFS-回溯与剪枝-C - N皇后问题

    C - N皇后问题 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N,求出有多少种合法的放 ...

  5. Python之三:运算符与表达式

    1.运算符: 1.1.运算符种类: 运算符  名称  说明  例子  + 加    5+4  - 减      *  乘      /  除      //  取整除  商的整数部分  3//2,结果 ...

  6. [Python]pyhon去除txt文件重复行 python 2020.2.10

    代码如下: import shutil readPath='E:/word4.txt' #要处理的文件 writePath='E:/word5.txt' #要写入的文件 lines_seen=set( ...

  7. spring框架中用到了哪些设计模式

    1.代理模式:在AOP和remoting中被用的比较多 2.单例模式:在spring配置文件中定义的bean默认为单例模式 3.模板方法模式:解决代码重复问题 4.前端控制器模式:spring提供了D ...

  8. layedit不可编辑,按钮不能使用

    $("#LAY_layedit_1").contents().find("body[contenteditable]").prop("contente ...

  9. try_except_finally

    blog: python中的try/except/else/finally  python文档:错误和异常 与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出 ...

  10. DES加密算法 转

    1.什么是对称密码算法 网络安全通信中要用到两类密码算法,一类是对称密码算法,另一类是非对称密码算法.对称密码算法有时又叫传统密码算法.秘密密钥算法或单密钥算法,非对称密码算法也叫公开密钥密码算法或双 ...