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

    P1445 [Violet]樱花

    显然$x,y>n$

    那么我们可以设$a=n!,y=a+t(t>0)$

    再对原式通分一下$a(a+t)+ax=x(a+t)$

    $a^{2}+at+ax=ax+tx$

    $x=a^{2}/t+a$

    $x=(n!)^{2}/t+n!$

    再根据唯一分解定理

    $(n!)^{2}=q_{1}^{p_{1}}*q_{2}^{p_{2}}*q_{3}^{p_{3}}*......*q_{m}^{p_{m}}$

    将$(n!)^{2}$分解质因数一下

    最后乘法原理套上去

    end.

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #define re register
     5 using namespace std;
     6 #define N 1000002
     7 const int mod=1e9+7;
     8 int n,v[N],pri[N],cct,ans=1;
     9 int main(){
    10     scanf("%d",&n);
    11     for(re int i=2;i<=n;++i){
    12         if(!v[i]) v[i]=pri[++cct]=i;
    13         for(re int j=1;j<=cct;++j){
    14             if(pri[j]>i||pri[j]*i>n) break;
    15             v[pri[j]*i]=pri[j];
    16         }
    17     }
    18     for(re int i=1;i<=cct;++i){
    19         long long cnt=0;
    20         for(re int j=n;j;j/=pri[i]) cnt+=j/pri[i];
    21         cnt=cnt<<1|1;
    22         ans=1ll*ans*cnt%mod;
    23     }printf("%d",ans);
    24     return 0;
    25 }
    View Code
  • 相关阅读:
    为什么富人越来越富,穷人越来越穷?
    计算几何基础_点_向量_极角排序
    滑窗模板_双向队列
    后缀数组
    AC自动机
    RMQ_ST表
    二叉树求逆序对(伪AC 23333)
    分块
    莫队
    树状数组_二维
  • 原文地址:https://www.cnblogs.com/kafuuchino/p/9893613.html
Copyright © 2011-2022 走看看