#239.亲密对数

news/2024/10/9 10:50:12/

本蒟蒻的第一篇题解,望大家多多见谅!

P a r t Part Part 1 1 1 读题
题目描述:

编写程序求给定整数 n n n的“亲密对数”。“亲密对数”是指:若整数 a a a的因子(包括1但不包括自身,下同)之和为 b b b,整数 b b b的因子之和为 a a a,则称 a a a b b b为一对“亲密对数”。
要求使用函数,函数功能是:计算某一个数的因子(包括1但不包括自身)之和。
n n n由键盘输入,如果存在“亲密对数”则输出该数,否则输出NO。要求输入输出均在主函数中完成。

输入格式:

一行,一个整数 n n n i n t int int范围之内)

输出格式:

输出一行,如题所述

输入样例1:

220

输出样例1:

284

输入样例2:

8

输出样例2:

NO

数据范围与提示:

n ≤ 2147483647 n≤2147483647 n2147483647

P a r t Part Part 2 2 2 思路

由题意可知,我们要先计算输入值 n n n因数和(即为 m m m),再计算 m m m因数和,如果这个因数和与 n n n相等,输出 m m m;否则输出NO
1.判断

if(a的因数和==b&&b的因数和==a){cout<<b;
}
elsecout<<"NO";

2.求因数和
方法一:

int sum=0;
for(int i=1;i<=sqrt(n);i++){if(n%i==0){// 如果i是n的因子sum+=i+n/i;if(n/i==i||n/i==n)//如果k与i重复或与n重复sum-=n/i; //减去}
}
return sum;

方法二:

int sum=0;
for(i=2;i<=sqrt(n);i++){if(n%i==0){//判断两个因子是否相等if(i!=x/i){s=s+i+x/i;}else{s+=i;	}}
}
return sum;

大家分析完后,可以试着写代码哦!
P a r t Part Part 3 3 3 代码

方法一:

#include <bits/stdc++.h>
using namespace std;
int ym(int n) {int sum = 0;for (int i = 1; i <= sqrt(n); i++) {if (n % i == 0) {sum += i + n / i;if (n / i == i || n / i == n)sum -= n / i;}}return sum;
}
int main() {long long n, m;cin >> n;m = ym(n);if ((n == ym(m)) && (m = ym(n)))cout << m;elsecout << "NO";return 0;
}

方法二:

#include <bits/stdc++.h>
using namespace std;
int ym(int n){int sum=0;for(i=2;i<=sqrt(n);i++){if(n%i==0){//判断两个因子是否相等if(i!=x/i){s=s+i+x/i;}else{s+=i;	}}}return sum;
}
int main(){long long n,m;cin>>n;m=ym(n);if((n==ym(m))&&(m=ym(n)))cout<<m;elsecout<<"NO";	return 0;
}

P a r t Part Part 4 4 4 总结

本题考查因数和的计算以及对满足条件的数进行判定

看完题解后,会不会感到很简单呢?赶快去试试吧!


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

相关文章

JavaScript-239:本地存储

本地存储 随着互联网的快速发展&#xff0c;基于网页的应用越来越普遍&#xff0c;同事也变得越来越复杂&#xff0c;为了满足各种各样的需求&#xff0c;会经常在本地存储戴昂的数据&#xff0c;HTML5规范提出了相关解决方案 本地存储特性 数据存储在用户浏览器中设置、读取…

leetcode:239. 滑动窗口最大值

题目来源 leetcode&#xff1a;239. 滑动窗口最大值 题目描述 class Solution { public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {} };题目解析 题目相当于维护了一个大小为3的滑动窗口&#xff0c;并输出每个滑动窗口内的最大值 那么什么…

239. 奇偶游戏

小 A 和小 B 在玩一个游戏。 首先&#xff0c;小 A 写了一个由 0 和 1 组成的序列 S&#xff0c;长度为 N。 然后&#xff0c;小 B 向小 A 提出了 M 个问题。 在每个问题中&#xff0c;小 B 指定两个数 l 和 r&#xff0c;小 A 回答 S[l∼r] 中有奇数个 1 还是偶数个 1。 机…

AcWing 239. 奇偶游戏

AcWing 239. 奇偶游戏 ①并查集做法&#xff1a;多维护一个d数组&#xff0c;d[i]标识从root到i节点1的个数&#xff0c;之后读入每个问题&#xff0c;对于每个节点进行离散化存储&#xff0c;对已有关系的节点&#xff0c;判断节点之间的1的数量和原来维持的数量是否冲突&…

【Leetcode刷题】【239】滑动窗口最大值

题目描述 给定一个数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 思路 暴力法 滑动窗口&#xff0c;输入一个数组和一个窗口大小&#…

239、一个带宽如何连接两个路由器?详解两种方法

实现一个带宽连接两个路由器,有两种方法: 1、二级路由器 2、无线桥接 今天我们就来看下这两种方法如何设置 一、二级路由器方法 当家庭的面积比较大,或者是别墅时,一个路由器无法满足无线覆盖,所以经常需要添加路由器2来解决。 1、连接路由器1与路由器2 1、需要一根…

docker版jxTMS使用指南:有限状态自动机

本文讲解4.4版jxTMS中新的有限状态自动机&#xff0c;整个系列的文章请查看&#xff1a;docker版jxTMS使用指南&#xff1a;4.4版升级内容 docker版本的使用&#xff0c;请查看&#xff1a;docker版jxTMS使用指南 4.0版jxTMS的说明&#xff0c;请查看&#xff1a;4.0版升级内…

蚂蚁森林数据库造数

基于之前的数据库建模方法&#xff0c;我们设计好数据库之后还需要往数据库中填充数据以供程序测试使用 建表如下&#xff1a; energy friend steal user 我们需要往该空数据库中填入适当的测试数据&#xff0c;虽然各个表之间有主外键关系&#xff0c;但是我们建库时不…