第一道ac

牛客牛客编程巅峰赛S1第6场 - 青铜&白银

A.循环右移
题目:链接:https://ac.nowcoder.com/acm/contest/6490/A
来源:牛客网
牛牛有一个二进制数的字符串,他想把字符串循环右移k位,然后得到一个新的二进制数,你能告诉牛牛这个数的十进制值是多少吗。给定一个二进制字符串str和循环位移位数k,返回循环后的二进制数的十进制值。
示例1

输入

复制 "10110",2
"10110",2

输出

复制 21
21

说明

新二进制串为“10101”,十进制值为21

备注:

1≤∣str∣≤63,1≤k≤∣str∣1\leq|str|\leq 63,1\leq k\leq|str|1str63,1kstr
  long long rotateRight(string str, int k) {
        int c,b;
        c=str.length();         //计算数组长度
    for (int j = 0; j < k; j++) {
        b=str[c-1];
        for (int i =c-2; i >=0; i--) {        //循环右移
            str[i+1]=str[i];
        }
        str[0]=b;
    }
    bitset<63>ans(str);           //构造63位0,1数组,并把str存进去 
    return ans.to_ulong();       //把存入ans的str值转换为十进制返回
    }



全部评论

相关推荐

在读外卷大学生:神仙排版,看的我头晕直接扔了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务