求题解
2026-02-12 13:52:48
发布于:浙江
哪位路过人可以留下题解(不要答案)
全部评论 15
通过创建虚拟机解决问题
#include <cstdint> #include <vector> #include <array> #include <iostream> #include <stdexcept> class VM32{ public: using u32=uint32_t; enum Registers{EAX,EBX,ESP,EIP,REG_COUNT}; enum OpCode:u32{HALT=0x00000000,IN=0x0B000000,OUT=0x0C000000,ADD_REG=0x04000000}; static constexpr size_t MEM_SIZE=16*1024*1024; VM32(){registers.fill(0);registers[ESP]=MEM_SIZE-4;memory.resize(MEM_SIZE,0);} void load_program(const std::vector<u32>&p,size_t s){if(s>memory.size())throw std::runtime_error("Program too large");for(size_t i=0;i<s;++i)memory[i]=p[i];} void run(){ while(1){ u32 eip=registers[EIP]; if(eip>=memory.size())throw std::runtime_error("EIP out of bounds"); u32 inst=memory[eip];registers[EIP]+=1; u32 op=inst&0xFF000000;u32 args=inst&0x00FFFFFF; switch(op){ case HALT:return; case IN:{u32 r=args&0xFF;if(r>=REG_COUNT)throw std::runtime_error("Invalid reg");u32 v;std::cin>>v;registers[r]=v;break;} case OUT:{u32 r=args&0xFF;if(r>=REG_COUNT)throw std::runtime_error("Invalid reg");std::cout<<registers[r]<<std::endl;break;} case ADD_REG:{u32 s=(args>>16)&0xFF;u32 d=args&0xFF;if(s>=REG_COUNT||d>=REG_COUNT)throw std::runtime_error("Invalid reg");registers[d]+=registers[s];break;} default:throw std::runtime_error("Invalid opcode"); }}} private: std::array<u32,REG_COUNT>registers; std::vector<u32>memory; }; int main(){ try{ VM32 vm; std::vector<VM32::u32>p={0x0B000000|VM32::EAX,0x0B000000|VM32::EBX,0x04000000|(VM32::EBX<<16)|VM32::EAX,0x0C000000|VM32::EAX,0x00000000}; vm.load_program(p,5);vm.run(); }catch(const std::exception&e){std::cerr<<"VM Error: "<<e.what()<<std::endl;return 1;} return 0; }2026-03-23 来自 江苏
1何意味
2026-02-11 来自 浙江
1没有意味
2026-02-11 来自 浙江
0



2026-02-11 来自 浙江
1?觉得 A+B 难的话可以退役了
2026-02-11 来自 浙江
0
j
2026-03-24 来自 浙江
0#include <bits/stdc++.h>
int main(){
long long a,b; stdcin>>a>>b; stdcout<<a+b;
}2026-02-23 来自 浙江
0这还要题解,孩子无敌了
2026-02-14 来自 湖北
0我现在早做出来了
2026-03-08 来自 浙江
0
a = input().split()
b = int(a[0])
c = int(a[1])
d = c + b
print(d)2026-02-13 来自 广东
0对对对,这就是C++,孩子快写上去,哈哈哈哈哈哈哈哈哈哈哈哈哈哈
python,别装
2026-02-14 来自 湖北
0
https://www.luogu.com.cn/article/kr464n3o
2026-02-12 来自 浙江
0喜欢题解是吧,行,我给你找个
2026-02-12 来自 浙江
0和溢位
2026-02-12 来自 上海
0无‘’
2026-02-12 来自 澳门
0#include<iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
cout<<a+b;
return 0 ;
}2026-02-12 来自 澳门
0A+B problem2026-02-12 来自 浙江
0你啥意思
2026-02-12 来自 浙江
0不是说不给答案吗
2026-02-12 来自 浙江
0那我给题目
2026-02-12 来自 浙江
0
又是一个删评的,诶
2026-02-11 来自 浙江
0之前谁删过你评
2026-02-11 来自 浙江
0?
2026-02-11 来自 浙江
0看一位做题数量 1000 多,2min 一道紫的超级大佬。是谁我不说
2026-02-11 来自 浙江
1
我是回别人的(他是另一个),况且我当时真没思路
2026-02-11 来自 浙江
0YES_________________________________________________
2026-02-11 来自 浙江
0其实一点都不难



2026-02-11 来自 浙江
0



















2026-02-11 来自 浙江
0





























有帮助,赞一个