zoukankan      html  css  js  c++  java
  • C. Primes and Multiplication

    题目连接:https://codeforces.com/contest/1228/problem/C

    题目大意:g(x,y)==y^k(其中y^k是X的最大可以整除因子)

         f(x,y)==g(x,p1)*(x,p2)....其中pi是x的第i个质因子

    求f(x,1)*f(x,2)*f(x,3)---*f(x,n);

    题解:对于整数N....N/x==从1到N可以被X整除的个数N/x^2同理。。。

    所以我们不妨对每个质因子进行叠加,对于第一个p1,让N多次除以p1,同时记录可以整除的个数,最终我们就可以统计p1的总个数,其他质因子类似。

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const ll mod=1e9+7;
    const int N=1e5+7;
    int arr[N];
    ll ksm(ll x,ll y){
        ll res=1;
        while(y){
            if(y&1) res=(res%mod*x%mod)%mod;
            y>>=1;
            x=(x%mod*x%mod)%mod;
        }
        return res%mod;
    }
    int main(){
        ll n,m;
        cin>>n>>m;
        ll pos=0;
        for(ll i=2;i*i<=n;i++){
            if(n%i==0){
                arr[pos++]=i;
                while(n%i==0)    n/=i;
            }
        }
        if(n!=1) arr[pos++]=n;
        ll ans=1;
        for(ll i=0;i<pos;i++){
            ll z=m;
            ll t2=0;
            while(z){
                ll t1=z/arr[i];
                z/=arr[i];
                t2+=t1;
            }
            ans=(ans%mod*ksm(arr[i],t2)%mod)%mod;
        }
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    学生排序,使用三层优先级
    利用类计算学生成绩和排序
    join()函数
    对象
    015_eclipse开发环境的使用
    013_运算符_算术
    012_变量
    011_jdk7新特性
    010_类型提升问题
    008_浮点数误差问题
  • 原文地址:https://www.cnblogs.com/Accepting/p/11735296.html
Copyright © 2011-2022 走看看