区间[A,B]中有多少个整数的位数之和是s,哪个是最小的? 写一个C++程序
时间: 2024-02-15 10:06:11 浏览: 169
以下是一个简单的C++程序,用于计算区间[A,B]中位数之和为s的整数个数,并输出最小的整数:
```c++
#include <iostream>
#include <cmath>
using namespace std;
int digit_sum(int n) { // 计算n的位数之和
int sum = 0;
while (n) {
sum += n % 10;
n /= 10;
}
return sum;
}
int main() {
int A, B, s;
cin >> A >> B >> s;
int cnt = 0, min_num = INT_MAX;
for (int i = A; i <= B; i++) {
if (digit_sum(i) == s) {
cnt++;
min_num = min(min_num, i);
}
}
cout << cnt << endl;
if (min_num != INT_MAX) {
cout << min_num << endl;
}
return 0;
}
```
该程序首先读取输入的A、B和s。然后使用一个循环来遍历区间[A,B]中的每个整数,计算其位数之和,并判断是否等于s。如果是,则计数器cnt加1,并更新最小的整数min_num。最后输出cnt和min_num。
需要注意的是,该程序假设输入的A和B都是正整数。如果需要支持负整数,需要对输入进行特殊处理。
阅读全文