博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客假日团队赛2 D.亲和数对
阅读量:7239 次
发布时间:2019-06-29

本文共 847 字,大约阅读时间需要 2 分钟。

链接:

题意:

求在给定区间[start,end]内所有的亲和数对。

亲和数的定义:对于数对(A,B),如果A的除了自己外的所有约数的和等于B,并且B的所有除了自己外的所有约数的和等于A,那么就称(A,B)为一组亲和数。
如果A=B,只需输出A即可,否则按照其中较小的一个数为第一关键字排序输出。

思路:

先处理出start到end的所有约数和。

在从头往后遍历即可。1特判一下

代码:

#include 
using namespace std; typedef long long LL;const int MAXN = 5e5 + 10;const int MOD = 1e9 + 7;int n, m, k, t; int Sum[MAXN];int IsPrime[MAXN]; void Init(){ for (int i = 1;i < MAXN;i++) Sum[i] = 1; for (int i = 2;i < MAXN;i++) for (int j = i*2;j < MAXN;j += i) Sum[j] += i;} int main(){ Init(); int s, e; cin >> s >> e; for (int i = max(2, s);i <= e;i++) { if (Sum[i] > i && Sum[i] < MAXN && Sum[Sum[i]] == i) cout << i << ' ' << Sum[i] << endl; if (Sum[i] == i) cout << i << endl; } return 0;}

转载于:https://www.cnblogs.com/YDDDD/p/11037623.html

你可能感兴趣的文章
最近那些事儿……
查看>>
LINQ如何做SELECT TOP操作
查看>>
Merge k Sorted Arrays
查看>>
第一篇,书上的fortran用c++实现
查看>>
【转】关于cocos2dx+lua注册事件函数详解
查看>>
Swift3.0P1 语法指南——集合类型
查看>>
QT把widget转换成图片后打印
查看>>
JavaScript 运行机制详解:再谈Event Loop
查看>>
UVA 11214 Guarding the Chessboard
查看>>
在windows下安装elk
查看>>
Nginx故障迁移
查看>>
Snippet 功能扩展
查看>>
fragment(2、动态创建)
查看>>
while(cin>>a)的原理
查看>>
区块数组
查看>>
动态设置html根字体大小(随着设备屏幕的大小而变化,从而实现响应式)
查看>>
jQuery中对属性的增删改查
查看>>
linux 文件结构
查看>>
.NET简谈面向接口编程
查看>>
VS2010测试功能之旅:编码的UI测试(2)-操作“.NET研究”动作的录制原理(下)...
查看>>