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 ...
随机推荐
- MyBatis抛出BindingException异常可能是你忘了配置资源拷贝
最近博主在搭建Mybatis项目时遇到了一问题,在一切配置妥当后,开始运行测试代码,但是此时控制台无情的抛出了异常: 开始寻找问题根源 咦?难道是我哪里写错,我的第一反应是我的xml配置文件哪里写错了 ...
- 解决PMML namespace URI httpwww.dmg.orgPMML-4_4 is not supported
使用pmml的方式跨平台部署机器学习模型时,在java中加载模型,出现了该错误 原因:java的jar包版本与PMML文件的版本不相符,jar包的版本过低无法解析PMML文件.如果升级jar包,加载模 ...
- B站login-极验逆向
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 https:// ...
- map数据类型
MAP数据类型是一个类似于对象的数据类型 大型项目中会经常使用 通过 构造函数来定义MAP数据类型 con ...
- mysql8 windows 数据库名 表名 大小写
由于Apollo的SQL 脚本是大小写的.mysql8 默认又是纯小写的. 解决方法: 方法1.卸载MYSQL,重新安装MYSQL时,高级选项中指定区分大写小.这种会清空所有库和数据.不建议. 方法2 ...
- Vue学习:1.V标签综合1
认识V标签 目录 认识V标签 v-text: v-html: v-bind (缩写为 :): v-if / v-else / v-else-if: v-show: v-for: v-model: Vu ...
- Java中创建对象的5种方式总结
引言 作为Java开发人员,我们每天都会代码中创建对象,但我们通常使用依赖管理系统,比如Spring框架,然后,这里有很多种创建对象的方式,本文就对Java创建对象的几种方式进行总结 五种创建方式 创 ...
- 非空处理 Java非空判断 非空处理及mysql数据库字段的not null
1.mysql## 去掉非空,如果非空又没有默认值,这样程序在添加数据的时候i,如果没有设置值就会报错.该操作很危险.##ALTER TABLE `order_test` ADD COLUMN `te ...
- Java邮件发送解决ssl javax.mail实现方式
package test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.activation.DataH ...
- MySQL Explain 关键字详解
概述 explain 关键字可以模拟执行 sql 查询语句,输出执行计划,分析查询语句的执行性能 使用方式如下:explain + sql explain select * from t1 执行计划各 ...