C++ 编程题练习-计算整数k(10-8)

来源:互联网 发布:至此终年网络番外3 编辑:程序博客网 时间:2024/05/22 14:57

C++ 编程题练习-计算整数k

来源:coursera c++ pku 期末编程试题

一、题目

描述

输入整数 n ( 0 <=n<= 2^30) , 以及整数i,j(0 <= i,j <31,i < j-1), 输出整数k(按十六进制输出结果 ),k的第i位和n相同,第j位和n不同,i,j之间的位是1, 其他位都是0。这里提到的所有的位,指的都是二进制位,最右边算第0位。

输入

第一行是整数 t,表示数据组数。

每组输入数据是一行,三个整数 n,i和j。

输出

对每组输入数据,按十六进制输出结果。

样例输入

2
23 3 5
7 0 2

样例输出

30
3

二、程序

#include <iostream>#include <bitset>using namespace std;int main(){    int t;    cin>>t;    while(t--){        unsigned long n;        int i;        int j;        cin>>n>>i>>j;        bitset<32> nb(n);        bitset<32> kb(n);        for(int a=j-1; a>i; a--) kb.set(a);        for(int a=i-1; a>=0; a--) kb.reset(a);        kb.flip(j);        unsigned long k = kb.to_ulong();        cout<<hex<<k<<endl;    }    return 0;}
0 0
原创粉丝点击