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

网络销售网站推广福州短视频seo平台

网络销售网站推广,福州短视频seo平台,网站托管做的好的公司,app开发公司成员数论基础知识和模板-CSDN博客 问题分析 题目要求统计满足特定条件的排列数目。关键在于&#xff1a; 从给定的数组中选择两个数作为 n 和 m剩余的数必须能够组成 n 个 m 或 m 个 n 的结构计算所有可能的有效排列数目 完整 #include <bits/stdc.h> using namespace st…

 数论基础知识和模板-CSDN博客

 

问题分析

题目要求统计满足特定条件的排列数目。关键在于:

  1. 从给定的数组中选择两个数作为 n 和 m
  2. 剩余的数必须能够组成 n 个 m 或 m 个 n 的结构
  3. 计算所有可能的有效排列数目

完整

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL MOD = 1e9+7;// 快速幂计算 a^b % MOD
LL qpow(LL a, LL b) {LL res = 1;while (b) {if (b & 1) res = res * a % MOD;a = a * a % MOD;b >>= 1;}return res;
}int main() {int sum; cin >> sum;               // 输入数组长度int scale = sum - 2;              // 目标排列长度 = sum - 2// 预处理阶乘数组 jc[i] = i! % MODvector<LL> jc(500001, 1), invjc(500001);for (int i = 1; i <= 500000; i++) jc[i] = jc[i-1] * i % MOD;// 预处理阶乘的逆元数组 invjc[i] = (i!)^(-1) % MODfor (int i = 0; i <= 500000; i++) invjc[i] = qpow(jc[i], MOD-2);// 统计每个数的出现次数vector<int> bucket(500001);for (int i = 0; i < sum; i++) {int x; cin >> x;bucket[x]++;}LL ans = 0;// 枚举所有可能的因子对 (i, scale/i)for (int i = 1; i <= scale; i++) {if (scale % i == 0 && bucket[i] && bucket[scale/i]) {int n = i, m = scale/i;bucket[n]--; bucket[m]--;  // 临时减少计数// 计算剩余元素的排列数目LL now = jc[scale];for (int j = 1; j <= 500000; j++)if (bucket[j]) now = now * invjc[bucket[j]] % MOD;ans = (ans + now) % MOD;bucket[n]++; bucket[m]++;  // 恢复计数}}cout << ans << endl;return 0;
}

核心算法解析

1. 数学原理
  • 排列数计算:对于长度为 scale 的排列,若元素 x 出现 c_x 次,则排列数为:

    scale! / (c_1! * c_2! * ... * c_k!)
    
     

    在模运算下,除法转换为乘以逆元:a/b ≡ a * b^(-1) (mod MOD)

  • 逆元计算:使用费马小定理 a^(MOD-1) ≡ 1 (mod MOD),因此 a^(-1) ≡ a^(MOD-2) (mod MOD)

2. 预处理优化
  • 阶乘数组jc[i] 存储 i! % MOD,递推公式:jc[i] = jc[i-1] * i % MOD
  • 逆元数组invjc[i] 存储 (i!)^(-1) % MOD,通过快速幂计算:invjc[i] = qpow(jc[i], MOD-2)
3. 因子枚举策略
  • 枚举范围:遍历 i 从 1 到 scale,检查 i 是否是 scale 的因子
  • 条件判断:若 scale % i == 0 且数组中存在足够的 i 和 scale/i,则它们可能是有效解
  • 排列计算:临时减少 i 和 scale/i 的计数,计算剩余元素的排列数并累加
4. 复杂度分析
  • 预处理:阶乘和逆元计算均为 O (N)
  • 枚举因子:O (scale),实际有效因子对数量远小于 scale
  • 排列计算:每次 O (N),但仅在有效因子对时执行
  • 总复杂度:O (N + scale),其中 N = 5e5

 

http://www.dtcms.com/wzjs/84820.html

相关文章:

  • 网站弹窗代码网络推广合作资源平台
  • 沈阳建网站公司广告推广怎么找客户
  • 龙城网站建设网站备案查询系统
  • 河北软件开发网站建设seo黑帽有哪些技术
  • 生成链接的网站宁波seo推广定制
  • 广西seo免费seo刷排名
  • wordpress 餐饮主题搜索引擎优化实训报告
  • 模板网站建设价位靠谱seo外包定制
  • 武汉网站建设比较好的公司都有哪些?百度网址浏览大全
  • 做购物网站多少钱 知乎网络推广方案范例
  • 网站建设 北京昌平全网推广
  • 网站做微信小程序平台推广引流怎么做
  • 外国网站架构seo搜外
  • 做网站买流量seo服务外包价格
  • 哪些网站可以做免费广告推广企业网站优化方案
  • 有没有教做化学药品的网站百度指数数据下载
  • 网站程序开发教程百度推广代理查询
  • 北京私人做网站搜索引擎优化的报告
  • 浙江建设职业技术学院提前招网站网络推广比较经典和常用的方法有
  • 广州公司注册名称核名查询系统网页版怎样优化网络
  • 免费高清视频素材网站有哪些快速seo排名优化
  • 做公司 网站建设价格搜索广告
  • 移动网站建设自助建站广东百度推广的代理商
  • 公司网站建设西安seo学徒
  • 郑州上海做网站的公司有哪些调价智能关键词软件
  • 沈阳网站建设思路seo网站优化是什么
  • 违规网站开发 开发者如何规避风险个人怎么接外贸订单
  • 找外贸工作哪个网站好如何优化网络环境
  • 山东食品行业网站模板小红书关键词排名
  • 网络舆情监测制度抖音seo排名系统哪个好用