35分求助(别的oj题)
  • 板块灌水区
  • 楼主AbCd328
  • 当前回复16
  • 已保存回复16
  • 发布时间2024/9/26 21:55
  • 上次更新2024/9/27 11:18:24
查看原帖
35分求助(别的oj题)
1459568
AbCd328楼主2024/9/26 21:55

数位翻转

说明 给定一个数n,你可以进行若干次操作,每次操作可以翻转n的二进制表示下的某一位,即将0变成1,1变成0。 请问:至少需要多少次操作,才能将n变成n-1。

输入格式 一个正整数nn。(1 < n <10^9)

输出格式 输出最少的操作次数。

样例 输入数据 10 输出数据 2

#include<bits/stdc++.h> 
using namespace std;
int main()
{
    int n,v,z=0;
    char k;
    string m,yo;
    cin>>n;
    v=n-1;
    k=n;
    while(k)
    {
    	m=char(k%2+48)+m;
    	k=k/2;
	}
	while(v)
    {
    	yo=char(v%2+48)+yo;
    	v=v/2;
	}
	for(int i=m.size()-1;i>=0;i--)
	{
	    if(m[i]!=yo[i])
	    {
	    	z++;
		}
	}
	cout<<z;
}
2024/9/26 21:55
加载中...