zoukankan      html  css  js  c++  java
  • 找平方数

    从1——n,中找若干个数相乘,求能得到的最大平方数

    #include<iostream>
    #include<queue>
    #include<vector>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    #define P 100000007
    long long n,ans,t;
    int prime[8000000],cnt;
    int sum[8000000];
    bool is[8000000];
    void first()
    {    
        for(int i=2;i<=n+100;i++)
        {
            if(!is[i])    prime[++cnt]=i;
            
            for(int j=1;j<=cnt;j++)
            {
                if(i*prime[j] >=n+100)    break;    
                is[i*prime[j]]=1;
                if(i%prime[j] ==0)    break;
            }
        }
        return;
    }
    int main()
    {
        freopen("hao.in","r",stdin);
        freopen("hao.out","w",stdout);
        
        cin>>n;
        first();
        for(int i=1;i<=cnt;i++)
        {
            t=prime[i];
            while(t<=n)
            {
                sum[i]+=n/t;
                t=t*prime[i];//想是这样想的,但打错了变量 慎重
            }
        }
        ans=1;
        for(int i=1;i<=cnt;i++)
        if(sum[i]>=2)
        {
            sum[i]=sum[i]/2;
            for(int j=1;j<=sum[i];j++)
            ans=(ans*1LL*prime[i]*prime[i])%P;
        }
        cout<<ans<<endl;
        return 0;
    } 
  • 相关阅读:
    python_控制台输出带颜色的文字方法
    模拟数据库作业
    js笔记
    CSS 笔记
    html 笔记
    必备技能-Git 使用规范流程
    python 闭包
    30个python编程技巧!
    python 面向对象
    python 线程
  • 原文地址:https://www.cnblogs.com/CLGYPYJ/p/7631740.html
Copyright © 2011-2022 走看看