poj In Danger 约瑟夫

来源:互联网 发布:串口数据监控软件 编辑:程序博客网 时间:2024/05/16 19:14

题意:1-n每数2个便抛弃一个

将十进制转换为二进制,循环左移一位,在转换为十进制,即为解

#include <stdio.h>#include <string.h>#include <math.h>int main(int argc, char *argv[]){int i,n,m,j;while(scanf("%de%d",&n,&m))    {      if(n==0 && m==0) break;     while(1)         {         if(m==0) break; n*=10; m--;         }   i=1;       while(i<=n)       {    i<<=1; //左移必须有等于号,不然结果错误          }         i>>=1; n=(n-i)<<1;         printf("%d\n",n+1);}return 0;}/*循环左移方法: 例如n=7=(111)  循环结束后i=(1000)  i在右移为(100)  n-i=(11)为除了首位的数字  再将(n-i)右移+1结果便成    左移相当于*2 右移/2 */   


 

原创粉丝点击