码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ_2721_[Violet 5]樱花_数学

时间:2018-04-28 21:03:21      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:ace   #define   bre   cpp   name   AC   tput   rip   prim   

BZOJ_2721_[Violet 5]樱花_数学

Description

技术分享图片

Input

技术分享图片

Output

技术分享图片

技术分享图片


 
$\frac{1}{x}+\frac{1}{y}=\frac{1}{m}$

$xm+ym=xy$

$(x-m)*(y-m)=m^{2}$

于是转化为了求$n!$的约数个数

可以用每个质因子搞一下

 

代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
using namespace std;
#define N 1000050
typedef long long ll;
int n,prime[N],cnt;
bool vis[N];
ll ans,mod=1000000007;
int main() {
    ll i,j;
    ans=1;
    scanf("%d",&n);
    for(i=2;i<=n;i++) {
        if(!vis[i]) {
            prime[++cnt]=i;
            int tmp=n,r=0;
            //while(tmp) r+=tmp/i,tmp/=i;
            for(j=i;j>=i&&j<=n;j*=i) {
                r+=n/j;
            }
            ans=ans*(2*r+1)%mod;
        }
        for(j=1;j<=cnt&&i*prime[j]<=n;j++) {
            vis[i*prime[j]]=1;
            if(i%prime[j]==0) break;
        }
    }
    printf("%lld\n",ans);
}

 

BZOJ_2721_[Violet 5]樱花_数学

标签:ace   #define   bre   cpp   name   AC   tput   rip   prim   

原文地址:https://www.cnblogs.com/suika/p/8967169.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!