[编程题]1=N
  • 热度指数:1792 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个正整数,令 :
你可以对整数执行以下操作(次数不限):
选择一个大于等于的整数。支付单位的成本,令
给定正整数,找出使所需的最小成本

输入描述:
输入的第一行包含一个正整数
{1 \leq N \leq 3\times 10^5 }


输出描述:
输出使所需的最小成本
示例1

输入

12

输出

7
头像 BraveCoder
发表于 2025-09-06 17:49:58
核心思路:将 N 分解为质因数的乘积,最小成本就是所有质因数(包括重复的)之和。原因:当 a, b>=2 时,a+b<=a*b 恒成立,因此分解为(最小)质因数的成本最低。 import java.util.Scanner; public class Main { public 展开全文
头像 zhenghahahawda
发表于 2025-08-09 18:27:35
#include <cmath> #include <iostream> using namespace std; int main() { //选择最小的质因数,本质就是分解质因数 int n,ans=0;cin>>n; for(int 展开全文
头像 niuke9999
发表于 2025-11-14 10:10:29
#include <stdio.h> int main(void) { int n; scanf("%d", &n); if(n == 1){ printf("0\n"); ret 展开全文
头像 丨阿伟丨
发表于 2025-08-28 11:21:00
题目链接 1=N 题目描述 给定一个正整数 。你可以对一个整数执行以下操作(不限次数):选择一个大于等于 2 的整数 ,支付 的成本,然后将当前的数变为原来的 。请问,将 变为 1 所需的最小总成本是多少? 解题思路 本题要求将数字 通过一系列除法操作变为 1,并最小化操作成本之和。每次操作选 展开全文
头像 N_zip
发表于 2025-07-28 09:14:31
#include <iostream> using namespace std; //核心在于将 N 分解为若干个大于等于 2 的整数的乘积,使得这些整数的和(即总成本)最小。通过数学分析可知,将 N 分解为质因数的乘积时,总成本最小。这是因为质因数是不可再分的最小因数,进一步分解会导致 展开全文
头像 自由的风0450
发表于 2025-12-09 17:55:21
质因数分解 #include <iostream> #include<vector> using namespace std; int main() { int n; cin>>n; int res=0; for(int i=2; 展开全文
头像 噜噜啦啦(✪▽✪)
发表于 2025-05-13 15:44:43
import sys import math n = 0 max_in = 0 ans = 0 for line in sys.stdin: a = line.split() n = int(a[0]) max_in = int(math.sqrt(n)) for k i 展开全文
头像 nuosu76
发表于 2025-09-12 20:32:13
#include <bits/stdc++.h> using namespace std; using ll=long long; void solve() { ll n;cin>>n; vector<ll> yin_shu; for(ll 展开全文
头像 想润的番石榴在研究求职打法
发表于 2025-05-22 00:22:41
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); //本质 展开全文