zoukankan      html  css  js  c++  java
  • LOJ10202樱花——数论

    题目描述

    原题来自:HackerRank Equations

    求不定方程:

     1/x+1/y=1/n!

    的正整数解 (x,y) 的数目。

    输入格式

    一个整数 n 

    输出格式

    一个整数,表示有多少对 (x,y) 满足题意。答案对 1e9+7 取模。

    样例

    样例输入

    2
    

    样例输出

    3
    

    样例说明

    共有三个数对 (x,y) 满足条件,分别是 (3,6),(4,4) 和 (6,3)

    数据范围与提示

    对于 30% 的数据,n<=100
    对于全部数据,n<=1e6

    ___________________________________________________________________

    数论题,关键一步真的想不到!

    由于题目是正整数解,所以x,y都大于n

    题目很容易化为n!=xy/(x+y)

    由于x,y大于n!。所以x设为n!+a,y设为n!+b。

    上面的式子就可以化为(n!)^2=a*b

    也就是上面的式子,a,b有多少中解!

    所以,首先求出n中的质数,然后求出所有的质数在n!中出现的次数,而(n!)^2中的后的质数的个数要乘以2,让后就是求所有因数的个数。

    ___________________________________________________________________

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn=1e6;
     4 int n;
     5 int prime[maxn],cnt[maxn];
     6 bool sz[maxn];
     7 int js;
     8 void getprime(int n)
     9 {
    10     sz[0]=sz[1]=1;
    11     for(int i=2;i<=n;++i)
    12     {
    13         if(sz[i]==0)prime[js++]=i;
    14         for(int j=0;j<js&&prime[j]*i<=n;++j)
    15         {
    16             sz[prime[j]*i]=1;
    17             if(i%prime[j]==0)break;
    18         }
    19     }
    20 }
    21 void fenjie(int x)
    22 {
    23     for(int i=0;prime[i]*prime[i]<=x;++i)
    24         while(x%prime[i]==0)
    25         {
    26             x/=prime[i];
    27             cnt[prime[i]]++;
    28         }
    29     if(x!=1)cnt[x]++;
    30 }
    31 long long ans=1;
    32 int main()
    33 {
    34     cin>>n;
    35     getprime(n);
    36     for(int i=2;i<=n;++i)fenjie(i);
    37     for(int i=2;i<=n;++i)ans=(ans*((cnt[i]<<1)+1))%1000000007;
    38     cout<<ans;
    39     return 0;
    40 }
    View Code
  • 相关阅读:
    vue打包之后动态修改请求接口方法
    vue基于Blob.js和 Export2Excel.js做前端导出
    uniapp中scroll-view自定义滚动条
    vue项目报错如下:(Emitted value instead of an instance of Error)
    uniapp h5中解决跨域问题
    测试方法
    synchronized的锁问题
    Java的三种代理模式简述
    Spring Boot REST API 自动化测试
    Elasticsearch学习
  • 原文地址:https://www.cnblogs.com/gryzy/p/11496229.html
Copyright © 2011-2022 走看看