题解:ABC280D - Factorial and Multiple

news/2025/2/12 15:25:05/

题解:ABC280D - Factorial and Multiple

·题目

链接:Atcoder。

链接:洛谷。

·难度

算法难度:B。

思维难度:A。

调码难度:A。

综合评价:普及/提高-。

·算法

质因数分解+数论。

·思路

这题真是的,纯纯考数学。

首先,如果k本身是质数输出k即可(前面乘几都没用)。

剩下的答案,先给k分解质因数,记每个质数为p[i],对应的个数为sum[i],质数数量为cnt,最差情况下答案为p[cnt]*sum[cnt],这里阶乘中至少有sum[cnt]个p[cnt]的倍数,自然满足要求。于是我们先从1枚举到根号k,如果之中没有合法的情况就输出最差情况下的答案。

·代价

O(sqrt(k))。

·细节

判断是否合法,可以用sumot[i]记录当前的阶乘中能够整除p[i]的多少幂次。

最后判断是否是每个sum[i]都<=sumot[i]即可。

·代码

#include<bits/stdc++.h>
#define S 1100000
using namespace std;
long long p[S]={},sum[S]={},sumot[S]={},cnt=0,k=0;
bool prime(long long num);
void resolve(long long num);
int main(){scanf("%lld",&k);if(prime(k)==true){printf("%lld\n",k);return 0;}resolve(k);for(long long i=1;i*i<=k;i++){long long tmp=i;bool flag=false;for(long long j=1;j<=cnt;j++){while(tmp%p[j]==0){tmp/=p[j];sumot[j]++;}if(sum[j]>sumot[j]){flag=true;}}if(flag==false){printf("%lld\n",i);return 0;}}long long ans=p[cnt]*sum[cnt];printf("%lld\n",ans);return 0;
}
bool prime(long long num){for(long long i=2;i*i<=num;i++){if(num%i==0){return false;}}return true;
}
void resolve(long long num){long long tmp=num;for(long long i=2;i*i<=num;i++){if(tmp%i==0){cnt++;p[cnt]=i;}while(tmp%i==0){tmp/=i;sum[cnt]++;}}if(tmp>1){if(p[cnt]==tmp){sum[cnt]++;}else{cnt++;p[cnt]=tmp;sum[cnt]++;}}return;
}

·注意

分解质因数时一定特殊判断那个>sqrt(num)的数。


http://www.ppmy.cn/news/1061426.html

相关文章

excel下载后文件名称不对

正确写法 String headerValue String.format("attachment; filename\"%s\";", fileName "_" dateStr ".xlsx");// 这样就可以了response.setHeader("content-disposition", headerValue);// 或者这样response.setHeader(…

一文学会lua脚本

文章目录 0.前言背景应用 1. 学习大纲1. 学习基本语法&#xff1a;2. 理解函数和模块&#xff1a;3. 深入数据结构&#xff1a;4. 高级特性和技巧&#xff1a;5. 实践项目&#xff1a; 2. Lua脚本2.1 学习基本语法2.2 理解函数和模块2.3 深入数据结构2.4 高级特性和技巧 3. 高级…

脱离束缚:数字化工厂中ARM控制器的革命性应用!

近年来&#xff0c;中国数字经济体系已进入高速增长阶段。制造业作为中国经济高质量发展的重要支撑力量&#xff0c;在面临生产成本不断上涨、关键装备和核心零部件“受制于人”等挑战时&#xff0c;建设数字化工厂已成必然。 数字化工厂数据采集出现的问题 在数字工厂的建设…

目标检测YOLO实战应用案例100讲-基于特征增强的多感受野小目标检测算法在海思平台的应用

目录 前言 小目标检测现状及存在的问题 相关知识及算法分析 2.1卷积神经网络

后端开发有哪几种语言? - 易智编译EaseEditing

后端开发是构建应用程序的一部分&#xff0c;负责处理服务器端的逻辑、数据库交互和数据处理。有许多编程语言可用于后端开发&#xff0c;以下是一些常见的后端开发语言&#xff1a; Java&#xff1a; Java是一种广泛使用的面向对象编程语言&#xff0c;具有强大的跨平台能力。…

Rust安全之数值

文章目录 数值溢出 数值溢出 编译通过,运行失败 cargo run 1 fn main() {let mut arg std::env::args().skip(1).map(|x| x.parse::<i32>().unwrap()).next().unwrap();let m_i i32::MAX - 1;let a m_i arg;println!("{:?}", a); }thread main panicked…

C++笔记之静态成员函数可以在类外部访问私有构造函数吗?

C笔记之静态成员函数可以在类外部访问私有构造函数吗&#xff1f; code review! 静态成员函数可以在类外部访问私有构造函数。在C中&#xff0c;访问控制是在编译时执行的&#xff0c;而不是在运行时执行的。这意味着静态成员函数在编译时是与类本身相关联的&#xff0c;而不…

机器学习实战之模型的解释性:Scikit-Learn的SHAP和LIME库

概要 机器学习模型的“黑箱”困境 机器学习模型的崛起让我们惊叹不已&#xff01;不论是预测房价、识别图片中的猫狗&#xff0c;还是推荐给你喜欢的音乐&#xff0c;这些模型都表现得非常出色。但是&#xff0c;有没有想过&#xff0c;这些模型到底是如何做出这些决策的呢&a…