重复单数字的平方


问题“重复单数字的平方”让我们做什么?让我们来解读一下!

问题“重复单数字的平方”旨在找到像 33、44、555 等包含重复单数字的数字的平方。

方法 1:朴素方法

我们可以使用朴素方法来计算数字的平方,这包括以下步骤:

  • 将数字作为输入

  • 使用乘法运算符计算平方,即 square_of_number = number * number

  • 然后打印结果

C++ 实现

以下是上述方法的实现

示例

#include <iostream>

using namespace std;

int main() {
    int num = 333;
    // input the number
    long long res = num * num; // calculate the square
    cout << "The square of " <<num<< " is =" <<res << endl; // output the result
    return 0;
}

输出

The square of 333 is =110889

时间复杂度:O(1)

空间复杂度:O(1)

方法 2:写成 1111…1 的倍数

  • 每个这样的数字都可以表示为 1111…1 的倍数。例如,33333 = 3 * 11111。

  • 11、111、1111、11111……的平方分别为 121、12321、1234321、123454321 等。

  • 对于计算 11,111,… 的平方,我们有一个模式。查看此链接。

  • 因此,一个简单的解决方案是找到 111…11 的平方,然后将结果乘以 3、4、5、6 等(取决于重复的数字)。

  • 我们可以使用大数乘法来获得最终结果。

代码实现

示例

#include <iostream>
#include <cmath>
using namespace std;


long long square_of_ones(int num) {
     int n = log10(num) + 1; 
   long long square = 0; 
   for (int i = 1; i <= n; i++) {
      square= square* 10 + i;
   }
   for (int i = n - 1; i >= 1; i--) {
      square= square* 10 + i;
   }
   return square;
}

int main() {
    int num = 44;
    
    long long res = square_of_ones(num); // calculate the square
    int last_digit = num % 10;
    cout << "The square of " <<num<< " is =" <<res * last_digit * last_digit<< endl; // output the result
    return 0;
}

输出

The square of 44 is =1936

时间复杂度:O(n)

空间复杂度:O(1)

结论

在本文中,我们尝试使用两种不同的方法解释计算具有重复单数字的数字的平方的步骤。我希望这篇文章能帮助你更好地理解计算背后的概念。

更新于:2023年8月23日

90 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.