zoukankan      html  css  js  c++  java
  • Luogu P1445[Violet]樱花/P4167 [Violet]樱花

    Luogu P1445[Violet]樱花/P4167 [Violet]樱花

    真·双倍经验
    化简原式:
    $$frac{1}{x}+frac{1}{y}=frac{1}{n!}$$
    $$frac{xy}{x+y}=n!$$
    $$xy=n!(x+y)$$
    $$-n!(x+y)+xy=0$$
    $$(n!x+n!y)-xy=0$$
    $$(n!)2+(n!x+n!y)-xy=(n!)2$$
    $$(x-n!)(y-n!)=(n!)^2$$
    所以$(x-n!)$就是$(n!)^2$的一个因子。
    又因为$(x-n!)$的数量和$x$相等,那么解的个数就是$(n!)^2$的因数个数。

    #include<bits/stdc++.h>
    #define N 1000010
    #define MOD 1000000007
    
    using namespace std;
    
    int n,cnt;
    int pri[N];
    long long ans=1;
    bool vis[N];
    
    void Read() {
    	scanf("%d",&n);
    	return;
    }
    
    void EulerSieve(int x) {
    	for(int i=2;i<=x;i++) {
    		if(!vis[i]) {
    			pri[++cnt]=i;
    		}
    		for(int j=1;j<=cnt;j++) {
    			if(i*pri[j]>x) {
    				break;
    			}
    			else {
    				vis[i*pri[j]]=1;
    			}
    			if(!(i%pri[j])) {
    				break;
    			}
    		}
    	}
    	return;
    }
    
    int Factor(int k,int p) {
    	if(k<p) {
    		return 0;
    	}
    	else {
    		return k/p+Factor(k/p,p);
    	}
    }
    
    void Solve() {
    	for(int i=1;i<=cnt;i++) {
    		ans*=Factor(n,pri[i])*2+1;
    		ans%=MOD;
    	}
    	printf("%lld",ans);
    	return;
    }
    
    int main()
    {
    	Read();
    	EulerSieve(n);
    	Solve();
    	return 0;
    }
    
  • 相关阅读:
    伪元素:placeholder-shown&&:focus-within
    伪元素:target
    伪元素:focus-within
    MpVue解析
    ESLint在vue中的使用
    vue动态 设置类名
    Java 文件流操作.
    SpringMVC 与 REST.
    基于Nginx和Zookeeper实现Dubbo的分布式服务
    基于Spring的RPC通讯模型.
  • 原文地址:https://www.cnblogs.com/luoshui-tianyi/p/11560367.html
Copyright © 2011-2022 走看看