1.0拼正方形

1.0拼正方形_第1张图片

解题思路

由题意可知,这道题小明有7385137888721个2*2和10470245个1*1的方块,让我们求用这些方块可以拼出的最大的正方形的边长是多少

那我们可以先求一个最大的面积,因为最后拼成的是正方形,所以我们直接对这个最大的面积开平方即可,得到的数字就是这个正方形在最大情况下的边长

代码层面

#include 
using namespace std;
int main()
{
    long long n = 7385137888721LL * 4 + 10470245; //n是这些所有正方形卡片的总面积大小
    while (n--)//在while循环中通过不断所有n的大小然后求一个最大正方形边长
    {
        long long sqrtN = sqrt(n);
        if (sqrtN * sqrtN == n)//这一步其实主要是为了防止平方根取不到整的情况
        {
            cout << sqrtN << endl;//然后输出一下就可以了
            return 0;
        }
    }
    return 0;
}

涉及到的知识点:

sqrt函数

sqrt函数是一个开平方的函数,存储在头文件cmath中

适用语法如下:

#include
using namespace std;
int main()
{
  int n;//定义一个整型变量
  cin >> n;//键盘输入
  double r = sqrt(n);//定义一个double的变量r,这个r表示等于n的开平方数
                     //sqrt(n)表示对n开平方
  cout << r << endl;//输出r
  return 0;
}

你可能感兴趣的:(算法,蓝桥杯)