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


     noip爆炸啦,继续写jzoj的题吧


    一个数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数
    (perfect square),也称平方数。小A认为所有的平方数都是很perfect的~
    于是他给了小B一个任务:用任意个不大于n的不同的正整数相乘得到完全平
    方数,并且小A希望这个平方数越大越好。请你帮助小B告诉小A满足题意的最大的完全平方数。

    由于答案可以很大, 所以请输出答案对10^8 + 7取模后的结果.

    我们求出n!每个质因子的次数,若为奇数次那么就除掉一次,用逆元就好

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #define M 100000007
    #define LL long long
    using namespace std;
    bool vis[5000010];
    int w[2000100],t,n;
    LL S=1;
    inline LL pow(LL x,LL k,LL s=1){
    	for(;k;x=x*x%M,k>>=1) if(k&1) s=s*x%M;
    	return s;
    }
    int cal(LL x){
    	int cnt=0;
    	for(LL k=x;k<=n;k=k*x) cnt+=n/k;
    	return cnt;
    }
    int main(){
    	freopen("number.in","r",stdin);
    	freopen("number.out","w",stdout);
    	scanf("%d",&n);
    	for(int i=2;i<=n;++i){
    		if(!vis[i]) w[++t]=i; S=S*i%M;
    		for(int j=1;j<=t && i*w[j]<=n;++j){
    			vis[i*w[j]]=1;
    			if(i%w[j]==0) break;
    		}
    	}
    	for(int i=1;i<=t;++i)
    		if(cal(w[i])&1) S=S*pow(w[i],M-2)%M;
    	printf("%d
    ",S);
    }

  • 相关阅读:
    idea 配置 maven 项目
    idea 配置普通web项目
    idea java.lang.OutOfMemoryError: PermGen space
    idea checkout 项目
    物理机自动化装机实现
    prometheus node_exporter相关监控指标
    nginx Linux内核参数的优化
    《高性能 Go 代码工坊》中译
    docker仓库资源的地址修改
    influxdb-1.7.8(centos 7) 部署
  • 原文地址:https://www.cnblogs.com/Extended-Ash/p/7846026.html
Copyright © 2011-2022 走看看