上海计算机学会2023年3月月赛C++丙组T2约数的分类

编程入门 行业动态 更新时间:2024-10-07 05:23:54

上海计算机学会2023年3月月赛C++丙组T2<a href=https://www.elefans.com/category/jswz/34/1684425.html style=约数的分类"/>

上海计算机学会2023年3月月赛C++丙组T2约数的分类

约数的分类

内存限制: 256 Mb时间限制: 1000 ms

题目描述

古希腊数学家尼科马霍斯(Nicomachus)根据整数的真因数之和与该数的大小关系,将整数分为三类:

  • 当这个整数的所有真因数之和大于其本身时,称该数为过剩数(Abundant)
  • 当这个整数的所有真因数之和小于其本身时,称该数为不足数(Deficient)
  • 当这个整数的所有真因数之和恰好等于其本身时,称该数为完美数(Perfect)

所谓 a 的真因数是 a 的因数且小于 a 的数。给定一个正整数 n,请判断它是过剩数,不足数还是完美数。

输入格式

单个整数:表示给定的数字。

输出格式

根据输入整数的分类,输出 AbundantDeficient 或 Perfect

数据范围

  • 对于 50% 的分数,1≤n≤1,000,000
  • 对于 100% 的分数,1≤n≤2,000,000,000

样例数据

输入:

6

输出:

Perfect

说明:

6=1+2+3

输入:

7

输出:

Deficient

说明:

7是素数只有一个真因子1

输入:

12

输出:

Abundant

说明:

1+2+3+4+6>12

解析:

遍历求出所有因子,求和,比较大小。

代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{long long n;long long sum=1;cin>>n;for (int i=2;i*i<=n;i++){if (n%i==0){int t=n/i;sum+=t+i;if (i==t)sum-=i;}}if (sum>n)cout<<"Abundant";else if(sum==n)cout<<"Perfect";elsecout<<"Deficient";return 0;
}

更多推荐

上海计算机学会2023年3月月赛C++丙组T2约数的分类

本文发布于:2024-02-28 07:28:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1769118.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:约数   上海   计算机   丙组

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!