快快编程第218题:
218. 求位数
对于一个非负整数n,请问n包含几个数码?
输入输出格式
输入格式
输入一个非负整数n, 0<=n<=10^18。
输出格式
一个正整数。
两种算法,第一种:把n看成一个字符串;第二种:硬碰硬
第一种:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string n;
getline(cin,n);
cout<<n.size();
return 0;
}
第二种:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll size(ll x){
ll ans=0;
do{
ans++;
x/=10;
}while(x);
return ans;
}
int main()
{
ll n;
cin>>n;
cout<<size(n)<<endl;
return 0;
}
难度放大:如果是求n的二进制的位数呢?
哈哈哈,只有一种算法了
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll size(ll x){
ll ans=0;
do{
ans++;
x/=2;
}while(x);
return ans;
}
int main()
{
ll n;
cin>>n;
cout<<size(n)<<endl;
r

本文介绍了如何使用C++编程语言计算非负整数的数码数量,包括直接转换为字符串计数和针对二进制位数和0的个数的单独处理。给出了四种不同的函数实现方法。
最低0.47元/天 解锁文章
2326

被折叠的 条评论
为什么被折叠?



