原题链接 | 题解链接

本篇题解为此题最较简单做法及最较少码量, 并且码风优良, 请放心阅读。

题目简述

当 \(i\) 的所有正因数和 \(=\) \(n\) 时, 其中 \(i\) 的最小值

思路

首先需要完成求一个数的所有正因数之和的函数 \(f(n)\)。 要求此函数可返回传入参数的所有正因数之和, 那么直接遍历 \(1 - n\), 如果当前 \(i\) 是 \(n\) 的因数, 加入计和变量 \(sum\) 中, 最后返回 \(sum\) 的值即可。

示例 :

int f(int n) {
long long sum = 0;
for(int i = 1; i <= n; i ++)
if(!(n % i)) sum += i;
return sum;
}

注意 : \(sum\) 要开 \(long long\), 不然可能会爆。

接着在主函数中就可枚举 \(i\), 如果 \(f(i) = n\) 即可输出当前 \(i\), 并停止枚举; 如果当前 \(i > n\), 那么 \(f(i)\) 一定大于 \(n\), 因为 \(i > n\) 而 \(i\) 为 \(i\) 的因数。所以此时就可停止枚举, 并输出 \(-1\)。

具体枚举可参考 :

while(true) {
sum = f(i ++); // 计算因数和
if(i - 1 > n) break; // 如果当前 i > n 直接 break
if(sum == n) {
flag = true;
cout << i - 1 << endl; // 满足情况, 输出并 break
break;
}
}
if(!flag) cout << "-1\n";

注意 : 当 \(sum = n\) 时, 一定要标记停止枚举

最后只需要注意每组数据处理时, 记得初始化各个变量的值即可。

完整代码如下

#include<iostream>
using namespace std; long long T, n, sum = 0, num = 1;
bool flag = false; long long f(long long m) {
long long summ = 0;
for(long long i = 1; i <= m; i ++)
if(!(m % i)) summ += i;
return summ;
} int main() {
cin >> T;
while(T --) {
num = 1, sum = 0, flag = false;
cin >> n;
while(true) {
sum = f(num ++);
if(num - 1 > n) break;
if(sum == n) {
flag = true;
cout << num - 1 << endl;
break;
}
}
if(!flag) cout << "-1\n";
}
return 0;
}

SP12304 题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. k8s多集群切换:使用kubeconfig文件管理多套kubernetes(k8s)集群

    目录 一.系统环境 二.前言 三.kubeconfig文件 四.kubernetes(k8s)多集群切换 一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux rele ...

  2. centos7系统的七个运行级别和设置默认运行级别

    一.系统七个运行级别概述 0 系统停机模式,系统默认运行级别不能设置为0,否则不能正常启动,机器关的 1 单用户模式,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录 2 ...

  3. win10 使用idea 构建一个ssm的模板maven项目

    一.创建一个maven项目   1.1建立一个module作为web项目   File->New->project 选择maven,默认jdk,下面的列表什么都不选,next->输入 ...

  4. Javascript---时间加秒数得到新的时间

    <script> // 当前时间:curTime var curTime = new Date("2023-12-10 17:32:46"); // 当前时间加上XXX ...

  5. Android OpenMAX(一)漫谈

    在开始正式的学习前,我们先来聊一聊Android音视频开发中的一些问题.感受与想法.(有一点要事先说明,我的问题与答案.想法并不一定正确,请读者带着审慎的思考来阅读,后续的文章也是一样,希望读者边阅读 ...

  6. Abp vNext 框架 文章

    http://www.vnfan.com/helinbin/tag/Abp%20vNext框架/

  7. 什么是LLM大模型训练,详解Transformer结构模型

    本文分享自华为云社区<LLM 大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解>,作者:汀丶. 1.模型/训练/推理知识介绍 深度学习领域所谓的&quo ...

  8. 震惊!docker镜像还有这些知识,你都知道吗?----镜像(一)

    镜像操作命令表格 docker image 子命令 docker子命令 功能 docker image build docker build 从Dockerfile开始构建镜像 docker imag ...

  9. MySQL入门到精通(十):SQL优化第一篇(2021最新发布)

    SQL优化 1. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,创建表时N ...

  10. LLM应用实战:当图谱问答(KBQA)集成大模型(三)

    1. 背景 最近比较忙(也有点茫),本qiang~想切入多模态大模型领域,所以一直在潜心研读中... 本次的更新内容主要是响应图谱问答集成LLM项目中反馈问题的优化总结,对KBQA集成LLM不熟悉的客 ...