SP12304 题解
本篇题解为此题最较简单做法及最较少码量, 并且码风优良, 请放心阅读。
题目简述
当 \(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 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- k8s多集群切换:使用kubeconfig文件管理多套kubernetes(k8s)集群
目录 一.系统环境 二.前言 三.kubeconfig文件 四.kubernetes(k8s)多集群切换 一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux rele ...
- centos7系统的七个运行级别和设置默认运行级别
一.系统七个运行级别概述 0 系统停机模式,系统默认运行级别不能设置为0,否则不能正常启动,机器关的 1 单用户模式,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录 2 ...
- win10 使用idea 构建一个ssm的模板maven项目
一.创建一个maven项目 1.1建立一个module作为web项目 File->New->project 选择maven,默认jdk,下面的列表什么都不选,next->输入 ...
- Javascript---时间加秒数得到新的时间
<script> // 当前时间:curTime var curTime = new Date("2023-12-10 17:32:46"); // 当前时间加上XXX ...
- Android OpenMAX(一)漫谈
在开始正式的学习前,我们先来聊一聊Android音视频开发中的一些问题.感受与想法.(有一点要事先说明,我的问题与答案.想法并不一定正确,请读者带着审慎的思考来阅读,后续的文章也是一样,希望读者边阅读 ...
- Abp vNext 框架 文章
http://www.vnfan.com/helinbin/tag/Abp%20vNext框架/
- 什么是LLM大模型训练,详解Transformer结构模型
本文分享自华为云社区<LLM 大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解>,作者:汀丶. 1.模型/训练/推理知识介绍 深度学习领域所谓的&quo ...
- 震惊!docker镜像还有这些知识,你都知道吗?----镜像(一)
镜像操作命令表格 docker image 子命令 docker子命令 功能 docker image build docker build 从Dockerfile开始构建镜像 docker imag ...
- MySQL入门到精通(十):SQL优化第一篇(2021最新发布)
SQL优化 1. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,创建表时N ...
- LLM应用实战:当图谱问答(KBQA)集成大模型(三)
1. 背景 最近比较忙(也有点茫),本qiang~想切入多模态大模型领域,所以一直在潜心研读中... 本次的更新内容主要是响应图谱问答集成LLM项目中反馈问题的优化总结,对KBQA集成LLM不熟悉的客 ...