zoukankan      html  css  js  c++  java
  • 【模拟】HHHOJ#251. 「NOIP模拟赛 伍」高精度

    积累模拟经验

    题目描述

    维护一个二进制数,支持如下操作

    • "+" 该数加 11
    • "-" 该数减 11
    • "*" 该数乘 22
    • "" 该数除 22 并下取整

    保证操作过程中不会出现负数

    输入格式

    第一行 n,m 表示原数和指令的长度

    第二行 一个 01 串,从高位到低位表示一个二进制数

    第三行 指令

    输出格式

    输出操作后的数,二进制,无前导 0


    题目分析

    延迟处理进退位

     1 #include<bits/stdc++.h>
     2 const int maxn = 5000035;
     3 
     4 int n,m,a[maxn<<1],lens;
     5 char s[maxn],t[maxn];
     6 
     7 int main()
     8 {
     9     scanf("%d%d%s%s",&n,&m,s+1,t+1);
    10     lens = n;
    11     for (int i=1; i<=n; i++) a[i] = s[i]-'0';
    12     for (int i=1; i<=m; i++)
    13     {
    14         if (t[i]=='+') a[lens]++;
    15         if (t[i]=='-') a[lens]--;
    16         if (t[i]=='*') a[++lens] = 0;
    17         if (t[i]=='/'){
    18             if (a[lens] < 0)
    19                 a[lens-1] -= (-a[lens]+1)>>1;
    20             else a[lens-1] += a[lens]>>1;
    21             a[lens--] = 0;
    22         }
    23     }
    24     for (int i=lens; i; i--)
    25         if (a[i] < 0)
    26             a[i-1] -= (-a[i]+1)>>1, a[i] = (-a[i])&1;
    27         else a[i-1] += a[i]>>1, a[i] = a[i]&1;
    28     for (int i=1; i<=lens; i++) putchar(a[i]+'0');
    29     return 0;
    30 }

    END

  • 相关阅读:
    sublime显示当前文件的编码格式
    关于jquery中html()、text()、val()的区别
    bit,Byte,B,KB,MB,GB
    python之序列操作
    编程常用密匙
    js数组操作
    ob函数的使用
    php使用zlib实现gzip压缩
    js兼容性汇总
    centos7下源码编译安装mysql5.7
  • 原文地址:https://www.cnblogs.com/antiquality/p/9614191.html
Copyright © 2011-2022 走看看