解题思路:





注意事项:
这是循环位移,不是位移运算符就能ac的,wa了n次,这个是教训,没弄懂题目




参考代码:

#include<iostream>

#include<sstream>

#include<cstring>

#include<cmath>

#include<string>

using namespace std;


void move(int value,int n){

int zf = 1;

if(n < 0) zf = 0;

string str,a;

stringstream ss;

while(n){

int tmp = n%2;

ss << tmp;

ss >> a;

ss.clear();

//cout << a;

str += a;

n /= 2;

}

//cout << str;

int len = str.length();

while(len < 32){

str += "0";

len++;

}


if(value >= 0){

value = abs(value);

long long num = 0;

long long jie = 1;

int xiabiao = value;

for(int i = 0; i < len; i++){

num += jie*(str[xiabiao]-'0');

jie *= 2;

xiabiao = (xiabiao+1)% len;

}

if(zf) cout << num << endl;

else cout << "-"<< num << endl;

}else{

value = abs(value);

long long num = 0;

long long jie = 1;

int xiabiao = (len-value)%len;

for(int i = 0; i < len; i++){

num += jie*(str[xiabiao]-'0');

jie *= 2;

xiabiao = (xiabiao+1)% len;

}

if(zf) cout << num << endl;

else cout << "-" << num << endl;

}

}


int main(){

int n;

int value;

cin >> n >> value;

move(value,n);

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论