给定一个十进制整型数n求其各位数字平方相加之和
时间: 2023-05-24 10:06:46 浏览: 240
算法1:循环求余
对于一个十进制整型数,可以通过循环求余操作依次取出各位数字,然后求平方并累加,直至所有位都被取出计算完毕。
时间复杂度:$O(log_{10}n)$
C++ 代码:
```c++
class Solution {
public:
int sumOfSquares(int n) {
int sum = 0;
while (n) {
int digit = n % 10;
sum += digit * digit;
n /= 10;
}
return sum;
}
};
```
算法2:递归求余
递归求余操作与循环求余类似,不过是通过递归实现。递归终止的条件是n为0,否则对n取余并累加平方值,继续递归下一位数字。
时间复杂度:$O(log_{10}n)$
C++ 代码:
```c++
class Solution {
public:
int sumOfSquares(int n) {
if (n == 0) {
return 0;
}
int digit = n % 10;
return digit * digit + sumOfSquares(n / 10);
}
};
```
算法3:字符串转换
将整型数n转换为字符串,然后依次扫描字符串中的每一位数字,将其转换为整数并计算平方和,最后返回平方和。
时间复杂度:$O(log_{10}n)$
C++ 代码:
```c++
class Solution {
public:
int sumOfSquares(int n) {
string s = to_string(n);
int sum = 0;
for (char c : s) {
int digit = c - '0';
sum += digit * digit;
}
return sum;
}
};
```
阅读全文