zoukankan      html  css  js  c++  java
  • POJ 3652 Persistent Bits (模拟)

    没什么好说的,就是用位运算模拟就可以了。

    其中用mask来记录每个位是否被改变,没被改变的为1.

    #include <iostream>
    #include
    <cstdio>
    #include
    <algorithm>
    #include
    <memory.h>
    #include
    <cmath>
    #include
    <bitset>
    #include
    <vector>
    using namespace std;

    const int BORDER = (1<<20)-1;
    const int MAXSIZE = 37;
    const int MAXN = 1250;
    const int INF = 0x7ffffff;
    #define CLR(x,y) memset(x,y,sizeof(x))
    #define ADD(x) x=((x+1)&BORDER)
    #define IN(x) scanf("%d",&x)
    #define OUT(x) printf("%d\n",x)
    #define MIN(m,v) (m)<(v)?(m):(v)
    #define MAX(m,v) (m)>(v)?(m):(v)
    #define ABS(x) (x>0?x:-x)

    int high_use,A,B,C,S;
    int visit[(1<<20)-1];
    bitset
    <32> mask;

    int init()
    {
    high_use
    = -1;
    CLR(visit,
    0);
    return 0;
    }
    int work(int a,int b,int c,int s)
    {
    int mmax = s;
    visit[s]
    = 1;
    int cur = (s*a + b)%c;
    mask.
    set();
    while(true)
    {
    mmax
    = MAX(mmax,cur);
    mask
    &= (~(cur^s));
    cur
    = (cur*a+b)%c;
    if(visit[cur])
    break;
    else
    visit[cur]
    = 1;
    }
    for(int i = 15; i >= 0; --i)
    if(mmax >= (1<<i))
    {
    high_use
    = i;
    break;
    }
    return 0;
    }
    int output()
    {
    int i,j;
    for(i = 15; i > high_use; --i)
    printf(
    "0");
    for(i = high_use; i >= 0; --i)
    if(mask.test(i))
    {
    if(S&(1<<i))
    printf(
    "1");
    else
    printf(
    "0");
    }
    else
    printf(
    "?");
    printf(
    "\n");
    return 0;
    }
    int main()
    {
    while(IN(A))
    {
    if(!A)
    break;
    scanf(
    "%d%d%d",&B,&C,&S);
    init();
    work(A,B,C,S);
    output();
    }
    return 0;
    }

  • 相关阅读:
    远程连接redis服务
    redis的安装以及启动
    Easyui学习之右键菜单easyui-menu
    富文本编辑器KindEditor的使用
    zookeeper启动失败解决方法
    在TortoiseSVN使用clean up
    kettle性能优化
    idea快捷键
    Spring Cloud服务网关 Zuul Filter使用
    添加路由
  • 原文地址:https://www.cnblogs.com/lvpengms/p/1708829.html
Copyright © 2011-2022 走看看