zoukankan      html  css  js  c++  java
  • 用唯一分解定理求m/n

    用唯一分解定理求m/n,保证m能够被n整除;

    这其中用到了素数筛以及快速幂

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e4+5;
    bool vis[maxn];
    int prime[maxn],cnt=0,e[maxn];
    void getprime(){
        for(int i=2;i<maxn;++i){
            if(!vis[i])prime[++cnt]=i;
            for(int j=i*2;j<maxn;j+=i)
                vis[j]=1;
        }
    }
    void solve(int x,int d){
        for(int i=1;i<=cnt;++i){
            while(x>1&&x%prime[i]==0){
                x=x/prime[i];
                e[i]+=d;
            }
            if(x<=1)break;
        }
    }
    int qpow(int x,int cnt){
        int ans=1;
        while(cnt){
            if(cnt&1)ans*=x;
            x=x*x;
            cnt>>=1;
        }
        return ans;
    }
    int main()
    {
        getprime();
        int m=10000,n=10;
        solve(m,1);
        solve(n,-1);
        int ans=1;
        for(int i=1;i<=cnt;++i){
            ans*=qpow(prime[i],e[i]);
        }
        printf("%d
    ",ans);
        return 0;
    }
    

      

  • 相关阅读:
    ubuntu apache2配置
    Oauth2协议解读(一)
    OAuth2协议解读(二)
    flask 环境搭建
    BeautifulSoup初识
    Oauth2解读
    5路由控制
    ​1Web应用
    3Web框架
    2Http协议
  • 原文地址:https://www.cnblogs.com/lengsong/p/11290619.html
Copyright © 2011-2022 走看看