iostream


私信TA

用户名:HeyC

访问量:1761

签 名:

想要刷爆蓝桥杯

等  级
排  名 15924
经  验 779
参赛次数 0
文章发表 3
年  龄 20
在职情况 学生
学  校 新疆农业大学
专  业 土地资源管理

  自我简介:

喜欢就要去闯

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

注意事项:需要注意的是求的约束不要有重复的,比如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.0分

3 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区