洛谷 P2104 二进制

P2104 二进制

题目描述

小Z最近学会了二进制数,他觉得太小的二进制数太没意思,于是他想对一个巨大二进制数做以下 4 种基础运算:

运算 1:将整个二进制数加 1

运算 2:将整个二进制数减 1

运算 3:将整个二进制数乘 2

运算 4:将整个二进制数整除 2

小Z很想知道运算后的结果,他只好向你求助。

(Ps:为了简化问题,数据保证+,-操作不会导致最高位的进位与退位)

输入输出格式

输入格式:

第一行两个正整数 n,m,表示原二进制数的长度以及运算数。

接下来一行 n 个字符,分别为‘0’或‘1’表示这个二进制数。

第三行 m 个字符,分别为‘+’,‘-’,‘*’,‘/’,对应运算 1,2,3,4。

输出格式:

一行若干个字符,表示经过运算后的二进制数。

输入输出样例

输入样例#1: 复制

4 10
1101
*/-*-*-/*/

输出样例#1: 复制

10110

说明

【数据规模和约定】

对于 30%的数据,1 ≤ n,m ≤ 1000。

对于 60%的数据,1 ≤ n,m ≤ 10^5。

对于 100%的数据,1 ≤ n,m ≤ 5*10^6。

【时空限制】

2s/128M

思路:模拟。

#include <cstdio>
#include <iostream>
using namespace std;
int n,m;
char a[10000000],b[10000000];
int main(){
    scanf("%d%d",&n,&m);
    scanf("%s%s",a,b);
    n--;
    for(int i=0;i<m;i++){
        if(b[i]==‘+‘){
            int x=n;
            a[n]++;
            while(a[x]==50){ a[x]=48;a[x-1]+=1;x--; }
        }
        if(b[i]==‘-‘){
            int x=n;
            if(a[n]==49)    a[n]=48;
            else while(a[x]==48){ a[x]=49;x--; }
            a[x]=48;
        }
        if(b[i]==‘*‘){    n++;a[n]=48; }
        if(b[i]==‘/‘)    n--;
    }
    for(int i=0;i<=n;i++)    printf("%c",a[i]);
    cout<<endl;
}
时间: 2024-08-11 05:29:27

洛谷 P2104 二进制的相关文章

【洛谷P2104&#183;模拟】二进制

题面 题目描述 小Z最近学会了二进制数,他觉得太小的二进制数太没意思,于是他想对一个巨大二进制数做以下 4 种基础运算: 运算 1:将整个二进制数加 1 运算 2:将整个二进制数减 1 运算 3:将整个二进制数乘 2 运算 4:将整个二进制数整除 2 小Z很想知道运算后的结果,他只好向你求助. (Ps:为了简化问题,数据保证+,-操作不会导致最高位的进位与退位) 输入输出格式 输入格式: 第一行两个正整数 n,m,表示原二进制数的长度以及运算数. 接下来一行 n 个字符,分别为'0'或'1'表示

洛谷P1633 二进制

P1633 二进制 题目描述 有三个整数A.B.C,以下用N(2)表示N的二进制(没有前导0). 设A(2).B(2).C(2)的最大长度为L,你需要构造三个正整数X.Y.Z,满足以下条件: (1) X(2).Y(2).Z(2)的长度都不超过L. (2) A(2)与X(2)中1的个数相同. (3) B(2)与Y(2)中1的个数相同. (4) C(2)与Z(2)中1的个数相同. (5) X+Y=Z.. 输入输出格式 输入格式: 第一行包含一个正整数T,表示有T组测试数据. 接下来T行,每行三个正整

洛谷——P1062 数列

洛谷——P1062 数列 题目描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2,…) 请你求出这个序列的第N项的值(用10进制数表示). 例如,对于k=3,N=100,正确答案应该是981. 输入输出格式 输入格式: 输入文件只有1行,为2个正整数,用一个

洛谷P1940买蛋糕

题目传送门 题意:给定你一个数n,要求用最小个数的整数组成小于等于n的所有整数,并求出方案数. 很明显,擅长二进制的大犇们肯定一眼就看得出方案数是log2(n)+1,然而我并不擅长,但是推了一小会儿也就推出来了,证明也不难.那么问题就在于怎么求方案数,我个人使用的深搜,(当然网上有用DP的,然而我一向就不擅长DP(QAQ)),时间限制也放的很宽,有两秒,我用深搜最慢的点1100ms,也还算比较快了吧(或者是洛谷数据比较水?)反正也很容易了,看代码自己推一下应该很好懂 #include<cstdi

洛谷P2783 有机化学之神偶尔会作弊

题目传送门 啦啦啦,发个文纪念一下第一道在洛谷上A的黑题,一次性就过真是无比舒服-(虽然某些大佬说这题有点水……)题目其实思路不难,Tarjan缩点+LCA,不过因为是无向边,所以在Tarjan的时候做点标记就行了,不过第四个点会被卡,用vector存边就可以A掉了.另外输出用二进制这个应该没什么好说的. 下面放代码: #include<cmath> #include<stack> #include<vector> #include<cstdio> #inc

洛谷 P1784 数独[DFS/回溯]

To 洛谷.1784 数独类似题:CODEVS.4966 简单数独(4*4数独) CODEVS.2924 数独挑战) 题目描述 数独是根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个粗线宫内的数字均含1-9,不重复.每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的. 芬兰一位数学家号称设计出全球最难的“数独游戏”,并刊登在报纸上,让大家去挑战. 这位数学家说,他相信只有“智慧最顶尖”的人才有可能破解这个“数独之谜”.

洛谷 P2709 BZOJ 3781 小B的询问

题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数.小B请你帮助他回答询问. 输入输出格式 输入格式: 第一行,三个整数N.M.K. 第二行,N个整数,表示小B的序列. 接下来的M行,每行两个整数L.R. 输出格式: M行,每行一个整数,其中第i行的整数表示第i个询问的答案. 输入输出样例 输入样例#1: 6 4 3 1 3 2 1 1 3

洛谷1231 教辅的组成

洛谷1231 教辅的组成 https://www.luogu.org/problem/show?pid=1231 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书多得数不胜数,其中有书,有答案,有练习册.已知一个完整的书册均应该包含且仅包含一本书.一本练习册和一份答案,然而现在全都乱做了一团.许多书上面的字迹都已经模糊了,然而HansBug还是可

洛谷教主花园dp

洛谷-教主的花园-动态规划 题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值. 教主最喜欢3种树,这3种树的高度分别为10,20,30.教主希望这一圈树种得有层次感,所以任何一个位置的树要比它相邻的两棵树的高度都高或者都低,并且在此条件下,教主想要你设计出一套方案,使得观赏价值之和最高. 输入输出格式 输入格式: 输入文件garden.in的第1行为一个正整数n,表示需要种的