当前位置: 首页 > article >正文

【樱花——公式推导,约数个数】

题目


在这里插入图片描述



思路

条件是一个等式,那么我们可以用一个变量k来表示x,y两个变量

  1. 首先,易知 x , y > n ! x, y > n! x,y>n!
  2. y = n ! + k ,    k ∈ Z + y=n!+k, \;k \in Z_{+} y=n!+k,kZ+
  3. 代入原方程,得到参数方程组
    { x = n ! + ( n ! ) 2 k y = n ! + k \left\{\begin{matrix} x &=&n!&+& \frac{(n!)^{2}}{k}\\ y&= & n!&+&k \end{matrix}\right. {xy==n!n!++k(n!)2k
  4. 根据单调性, k k k 的个数就是 ( x , y ) (x,y) x,y的个数
  5. 那么这个问题就被转化成了:如何求n!^{2}的约数个数
  • 如何求 x x x 约数个数?
    • x x x 作质因数分解
    • 约数个数 = ∏ i = 1 c n t ( s [ p i + 1 ] ) \prod_{i=1}^{cnt}(s[p_{i}+1]) i=1cnt(s[pi+1])
    • 注意这里我们求 n ! n! n! 的质因数分解,每个质因数的指数乘2就行


代码

#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
typedef long long LL;
typedef pair<int, int> PII;

vector<PII> ps;
const int mod = 1e9+7; 
const int N = 1e6+10;
int primes[N], cnt;
bool st[N];
void get_primes(int n)
{
    for(int i = 2; i <= n; i++)
    {
        if(!st[i]) primes[++cnt] = i;
        for(int j = 1; primes[j] * i <= n; j++)
        {
            st[primes[j] * i] = true;
            if(i % primes[j] == 0) break;
        }
    }
}
int main()
{
    int n;
    cin >> n;
    get_primes(n);
    for(int i = 1; i <= cnt; i++)
    {
        int p = primes[i];
        LL s = 0;
        int t = n;
        while(t)
        {
            s = s + t / p;
            t /= p;
        }
        ps.push_back({p, 2*s});
    }
    
    LL ans = 1;
    for(auto c : ps)
    {
        int p = c.x, s = c.y;
        ans = (ans * (s+1)) % mod;
    }
    cout << ans % mod;
    return 0;
}

http://www.kler.cn/a/323289.html

相关文章:

  • 基于gradio+networkx库对图结构进行可视化展示
  • vue3点击按钮el-dialog对话框不显示问题
  • Qt / Qt Quick程序打包的一些坑 (四)
  • 从零开始学习 sg200x 多核开发之 TF 存储卡根文件系统扩容
  • 【HAProxy09】企业级反向代理HAProxy高级功能之压缩功能与后端服务器健康性监测
  • LLMs之Code:Qwen2.5-Coder的简介、安装和使用方法、案例应用之详细攻略
  • GPIO端口的使用
  • 什么是AQS
  • leetcode338. 比特位计数
  • openlayers知识总结、教程
  • 8-回溯算法
  • Github Webhook触发Jenkins自动构建
  • mac输入法 cpu占用,解决mac使用输入法出现卡顿延迟
  • 2:数据结构:列表与元组
  • 初识Tomcat
  • 【git lfs 问题记录】
  • 大数据复习知识点1
  • 独立站如何批量查收录?常用的3个的方法及其具体操作步骤
  • Linux学习笔记之重点概念、实用技巧和常见问题解答。
  • debian linux 只安装mysql client
  • 《AI办公类工具PPT系列之六——轻竹办公》
  • 从静态多态、动态多态到虚函数表、虚函数指针
  • 深度学习------------------------RNN(循环神经网络)
  • OJ在线评测系统 在Linux虚拟机搭建Docker 概念 入门 安装
  • 代码随想录算法训练营Day13
  • 代码为笔,合作作墨,共绘共赢画卷———未来之窗行业应用跨平台架构