1280 - C语言12.2

读入一个10进制正整数,将其二进制向右进行循环移位,并输出移位后的结果。

请务必注意本题中的整数是32位无符号整数,输入和输出过程中可以使用%u进行处理。

题目输入

2个用空格隔开的正整数a和n,表示将a进行二进制循环移位,向右移动n个位置。保证n不大于30。

题目输出

a向右循环移位n个位置的10进制表示。

请注意行尾输出换行。

输入/输出样例

题目输入

1023 20

题目输出

4190208

C语言解答

#include <stdio.h>
int main(){
	int n;
	unsigned int a;
//	freopen("1.txt","r",stdin);
	while(scanf("%u %d",&a,&n)==2){
		printf("%u\n",(a>>n|a<<(32-n)));
	}
//	fclose(stdin);
	return 0;
}

C++解答

#include <stdio.h>
int main() {
	unsigned int a, temp;
	int n;
	scanf("%u %d", &a, &n);
	temp = a & ((1 << n) - 1);
	printf("%u\n", (a >> n) | (temp << (32 - n)));
	return 0;
}

时间限制 1 秒
内存限制 32 MB
讨论 统计
上一题 下一题