2632 非常好友
时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题目描述 Description
Bessie和其他的所有奶牛的耳朵上都戴有一个射频识别(RFID)序列号码牌。因此农夫John可以机械化地计算他们的数量。很多奶牛都有一个“牛友”。如果奶牛A的序列号的约数之和刚好等于奶牛B的序列号,那么A的牛友就是B。在这里,一个数的“约数”不包括这个数本身。
因为一些奶牛的号码约数和大于其他任何奶牛的号码,所以这些奶牛没有牛友。而一些奶牛有一个“非常好友”,当两个奶牛互为“牛友”时,他们就是一对“非常好友”。注意在这道题中,忽略那些自己是自己的“非常好友”的情况。
给定一个序列号S(6≤S≤18,000),找到序列号不小于S的第一个有“非常好友”的奶牛。
比如说,考虑序列号220,它的约数是1,2,4,5,10,11,20,22,44,55,和110,和是284。类似的,284的约数是1,2,4,71,和142,他们的和是220。因此220和284是一对非常好友。
输入描述 Input Description
第1行:一个单独的整数S,即给定的序列号。
输出描述 Output Description
第1行:2个整数A和B,用一个空格隔开。A表示第一个序列号不小于S的有非常好友的奶牛的序列号,B是他的“非常好友”的序列号。
样例输入 Sample Input
206
样例输出 Sample Output
220284
数据范围及提示 Data Size & Hint
NO
分类标签 Tags 点此展开
暴力枚举即可
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 using namespace std; 6 int f(int n) 7 { 8 int ans=0; 9 for(int i=1;i<=n-1;i++)10 {11 if(n%i==0)12 {13 ans=ans+i;14 }15 }16 return ans;17 }18 int main()19 {20 int n;21 scanf("%d",&n);22 while(1)23 {24 int p=n;25 n++;26 int sum=f(p);27 int pd=f(sum);28 if(pd==p)29 {30 printf("%d %d",p,sum);31 return 0;32 }33 }34 return 0;35 }
,再回头,便生出无限羁绊。那是彼此的刺在对方心里留下的痕迹,