解题思路:主要就是求约数之和(不包括自身)

注意事项:需要注意的是求的约束不要有重复的,比如6的约数(不包括自身)是123,当用循环求的时候,2和3是重复的,如果用sum加的话,会重复累加2和3。所以可以使用一个标记来记录所求的约数是否已经求过了。

参考代码:

#include<iostream>


class Dear{

public:

      bool Input(void);

      void Countdear(void);

private:

      int time;

      int numa[100];

      int numb[100];

      int suma;

      int sumb;

};


bool Dear::Input(void)

{

      std::cin >> time;

      for (int a = 0;a < time;a++)

      {

            std::cin >> numa[a] >> numb[a];

            if (numa[a] < 0 || numb[a] > 600000)

                  return false;

      }


      return true;

}


void Dear::Countdear(void)

{

      int a = 0;


      while (a < time)

      {

            int flag = 0;

            suma = sumb = 0;

            for (int b = 2;b < numa[a] / 2;b++)

            {


                  if (b == flag)

                        break;

                  if (numa[a] % b == 0)

                  {

                        suma += b + numa[a] / b;

                        flag = numa[a] / b;

                  }

                  else

                        continue;

                  if (b == flag)

                        break;

            }


            for (int b = 2;b < numb[a] / 2;b++)

            {

                  if (b == flag)

                        break;

                  if (numb[a] % b == 0)

                  {

                        sumb += b + numb[a] / b;

                        flag = numb[a] / b;

                  }

                  else

                        continue;


            }


            suma += 1;

            sumb += 1;


            if (suma == numb[a] && sumb == numa[a])

                  std::cout << "YES\n";

            else

                  std::cout << "NO\n";

            a++;

      }

}



int main(void)

{

      Dear dear;


      if (!dear.Input())

            return -1;

      dear.Countdear();


      return 0;

}


点赞(0)
 

2 分

0 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论