输入一个正整数 n,求它的位数及其各位数字之和。
时间: 2023-09-29 16:08:34 浏览: 135
算法1:
1. 求出 n 的位数,可以通过循环除以 10 直到商为 0 来实现。
2. 求出 n 的各位数字之和,可以通过循环取模和除以 10 来实现。
时间复杂度:O(logn)
C++ 代码:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int cnt = 0, sum = 0;
while (n) {
cnt++;
sum += n % 10;
n /= 10;
}
cout << "位数:" << cnt << endl;
cout << "各位数字之和:" << sum << endl;
return 0;
}
```
算法2:
1. 将 n 转换成字符串。
2. 求出字符串的长度和各位数字之和。
时间复杂度:O(logn)
C++ 代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
string s = to_string(n);
int cnt = s.size(), sum = 0;
for (char c : s) {
sum += c - '0';
}
cout << "位数:" << cnt << endl;
cout << "各位数字之和:" << sum << endl;
return 0;
}
```
阅读全文