题解
2025-11-14 14:34:11
发布于:四川
0阅读
0回复
0点赞
这道题的数据量很大,如果直接除数据量会超,WA代码:
#include<iostream>
using namespace std;
int main(){
int n,sum=0;
cin>>n;
while(n%2==0){
n/=2;
sum++;
}
cout<<sum;
return 0;
}
所以采用了字符串,因为数据的特殊性,如果最高位无法再除以2,就必须消耗后面的位数进行弥补,每次会消耗掉一个0,所以答案ans=sum(最高位可以除以2的次数)+n.size()-1(后面0的数量),AC代码:
#include<iostream>
#include<string>
using namespace std;
int main(){
string n;
cin>>n;
int best=(int)(n[0]-'0'),sum=0;(类型转换)
while(best%2==0){
best/=2;
sum++;
}
cout<<sum+n.size()-1;
return 0;
}
这里空空如也

有帮助,赞一个