第一道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值转换为十进制返回
    }



全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 10:39
一个证都没&nbsp;我能填什么
程序员小白条:别人有,你为什么没有,还是这个道理,社会就是比较,竞争,淘汰,你要安逸,那么就要做好淘汰的准备
点赞 评论 收藏
分享
06-10 23:36
已编辑
首都经济贸易大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务