题目名称 371. 亲和数
输入输出 amicable.in/out
难度等级 ★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarsywgz 于2009-07-20加入
开放分组 全部用户
提交状态
分类标签
基本 搜索法 数学
分享题解
通过:62, 提交:251, 通过率:24.7%
Gravatar1020 100 0.000 s 0.00 MiB C++
Gravataradsfv 100 0.003 s 0.32 MiB C++
GravatarTA 100 0.083 s 0.70 MiB C++
GravatarKCkwok 100 0.128 s 0.31 MiB C++
GravatarTA 100 0.168 s 38.46 MiB C++
GravatarOIdiot 100 0.285 s 0.60 MiB C++
GravatarTBK 100 0.458 s 0.27 MiB C++
Gravatar城南花已开 100 0.667 s 2.62 MiB C++
Gravatar!@#¥% 100 0.684 s 0.31 MiB C++
Gravatar黄导演 100 0.685 s 0.31 MiB C++
本题关联比赛
练习赛01
关于 亲和数 的近10条评论(全部评论)
啧啧,暴力过的酸爽。
Gravatar安呐一条小咸鱼。
2016-02-21 09:11 3楼
一开始想着同时枚举x和y,结果发现y的范围很不好找...其实只枚举x就能过。设sum(x)为非自身约数的和,对于每个x(a<=x<=b),判断sum(sum(x))==x是否为真即可。sum()函数加了一点简单的优化,枚举约数到sqrt(x)而不是x
Gravatarliu_runda
2016-02-21 06:26 2楼
←_←这都是什么魂淡数据暴力TM都给过了。
GravatarTA
2015-03-11 20:30 1楼

371. 亲和数

★☆   输入文件:amicable.in   输出文件:amicable.out   简单对比
时间限制:1 s   内存限制:128 MiB

亲和数 ( Amicable Number ) 

【问题描述】
    某一天, tenshi 看了一本趣味数学书,上面提到了亲和数:定义数对 (x,y) 为亲和数对当且仅当 x 、 y 为不同正整数,且 x 、 y 各自的所有非自身正因子之和等于另一个数。例如 (220,284) 和 (280,224) 都是亲和数对,因为:

220 的所有非自身正因子之和为: 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284

284 的所有非自身正因子之和为: 1 + 2 + 4 + 71 + 142 = 220

数对 (x,y ) 跟 (y,x) 被认为是同一数对,所以我们只考虑 x<y 的情况。

任 务 : tenshi 对某个范围内的亲和数对的数量非常感兴趣,所以希望你能帮她编写一个程序计算给定范围内的亲和数对的数量。给定一个范围 A 到 B , 如果 A ≤ x ≤ B ,则我们称 (x,y) 在范围 [A,B] 内。

【输入格式】
    从文件的第一行分别读入正整数 A 和 B ,其中 A 、 B 满足

1 ≤ A ≤ B ≤ 10^8 B-A ≤ 10^5

【输出格式】
   输出文件只有一行,就是 [A,B] 内亲和数对的数量

【输入输出样例】
 
输入:
amicable.in
200 1200

输出:
amicable.out
2

注: [200,1200] 内的数对只有两个,分别是 (220,284) 和 (1184 1210)