C++ 重复的单个数字的平方数
问题“重复的单个数字的平方数”要求我们做什么?让我们解读一下!
问题“重复的单个数字的平方数”旨在找出类似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等(取决于重复的数字)。
-
我们可以使用大数乘法来得到最终结果。
C++实现
示例
#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)
结论
在本文中,我们尝试通过两种不同的方法来计算由重复的单个数字组成的数的平方。希望这篇文章能帮助你更好地理解计算背后的概念。