zoukankan      html  css  js  c++  java
  • 2632 非常好友

    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

    220 284

    数据范围及提示 Data Size & Hint

    思路:枚举。

    优化:因为素数的约数就是1和本身,在题中忽略那些自己是自己的“非常好友”的情况。所以在不是素数范围内枚举。

     1 #include<iostream>
     2 using namespace std;
     3 #include<cmath>
     4 
     5 bool sushu[1000001];
     6 int n;
     7 int yin(int a)
     8 {
     9     int s=0;
    10     for(int i=2;i<=sqrt(a);++i)
    11     {
    12         if(a%i==0)s+=(i+a/i);
    13     }
    14     return s+1;
    15 }
    16 int main()
    17 {
    18     sushu[1]=sushu[0]=1;
    19     for(int i=2;i<=1000;++i)
    20     {
    21         if(sushu[i]==0)for(int j=i*i;j<=1000000;j+=i)
    22         {
    23             sushu[j]=1;
    24         }
    25     }
    26     cin>>n;
    27     for(int i=n;;++i)
    28     {
    29         if(sushu[i])
    30         {
    31             int s=yin(i);
    32             if(i==yin(s))
    33             {
    34                 cout<<i<<" "<<s;
    35                 return 0;
    36             }
    37         }
    38     }
    39  }
  • 相关阅读:
    Valid Parentheses
    Remove Nth Node From End of List
    守护线程、守护进程
    4Sum
    Letter Combinations of a Phone Number
    3sum closest
    Excel Sheet Column Number
    Majority Element
    Balanced Binary Tree
    Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6745018.html
Copyright © 2011-2022 走看看