C++程序:计算表示n所需最小二进制数字个数


假设我们有一个数字n。如果一个正整数的所有位数都是0或1,则称其为二进制十进制数。例如,1001(一千零一)是二进制十进制数,而1021不是。从数字n出发,我们必须将n表示为一些(不一定不同)二进制十进制数的和。然后计算为此所需的最小二进制十进制数的个数。

因此,如果输入为n = 121,则输出为2,因为它可以表示为110 + 11或111 + 10。

步骤

为了解决这个问题,我们将遵循以下步骤:

ans := -1
while n > 0, do:
   ans := maximum of ans and (n mod 10)
   n := n / 10
return ans

示例

让我们来看下面的实现以更好地理解:

#include <bits/stdc++.h>
using namespace std;

int solve(int n) {
   int ans = -1;
   while (n > 0) {
      ans = max(ans, n % 10);
      n /= 10;
   }
   return ans;
}
int main() {
   int n = 121;
   cout << solve(n) << endl;
}

输入

121

输出

2

更新于:2022年3月3日

268 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告