Uva509 RAID

article/2025/10/5 19:36:14

我在这题卡了一天,心态有点小崩。不过最后AC的时候还是很开心的。

坑点:1.注意当两个及以上disc无法读取时,输入不合法。

           2.当校验结果与预期ans不同时,输入不合法。

           其它都为合法情况。

           当合法时,校验块不能作为数据读取,所以要判断磁盘储存区是否为校验块。

           最后将二进制转化为十六进制串时如比特数量不是4的整数,应当在ans串末尾补零。我采用string流和transform函数来进行进制转换,也可以用bitset。

            原题:

        

 

            代码:

#include<iostream>
#include<algorithm>
#include<string>
#include<sstream>//stringstream
#include<vector>//采用二维向量储存字符串
#include<iomanip>
using namespace std;
int main(void)
{ios::sync_with_stdio(false);//关闭流同步cin.tie(0);cout.tie(0);long long d,s,b,kase=1;while(cin>>d&&d){cin>>s>>b;char parity;cin>>parity;vector<vector<string>> RAID;//模拟discsetRAID.clear();string ANS="";//待定答案long long cnt=0;for(int i=0;i<b;i++){vector<string> init(d,"");RAID.push_back(init);}//二维向量初始化for(int i=0;i<d;i++){string temp;cin>>temp;int k=0;for(int j=0;j<s*b;j+=s){RAID[k][i]=temp.substr(j,s);k++;}//对输入字符串切串储存在disc中}int ans;bool flag=true;//判断输入是否合法if(parity=='E')//偶校验{ans=0;}else//奇校验{ans=1;}for(int i=0;i<b;i++)//这里注意循环嵌套的次序{for(int k=0;k<s;k++){int final=-10,pro=-10;//final存储异或结果,pro存储x位置for(int j=0;j<d;j++)//对于每一层各data存段的第k个字符进行遍历{if(RAID[i][j][k]=='0'){if(final<0){final=0;}else{final^=0;}}else if(RAID[i][j][k]=='1'){if(final<0){final=1;}else{final^=1;}}else if(RAID[i][j][k]=='x'){if(pro<0){pro=j;}else//如果在同一层同字节有超过一个x则非法{flag=false;goto out;}}}if(pro>=0)//求x值{if(ans){RAID[i][pro][k]=(!final)+'0';final=1;}else{RAID[i][pro][k]=final+'0';final=0;}}else//无x时判断校验结果{if(ans!=final){flag=false;goto out;}}}}for(int i=0;i<b;i++){for(int j=0;j<d;j++){if(j!=cnt){ANS+=RAID[i][j];//查询答案序列}}cnt++;cnt%=d;}out:cout<<"Disk set "<<kase++<<" is ";if(flag){cout<<"valid, contents are: ";long long len=ANS.length();while(len%4)//补0操作{ANS+="0";len++;}for(int i=0;i<len;i+=4)//按每4个字符切串转进制{string sub,HEX;sub=ANS.substr(i,4);stringstream ss;ss<<hex<<stoi(sub,nullptr,2);ss>>HEX;transform(HEX.begin(),HEX.end(),HEX.begin(),::toupper);cout<<HEX;}cout<<endl;}else{cout<<"invalid."<<endl;}}return 0;
}


http://chatgpt.dhexx.cn/article/NfeyKALj.shtml

相关文章

百度dueros人工智能-RDA5981(R01开发板)-学习心得-安装SDK(dueros的MbedOS系统)

R01开发板的代码及功能测试需要安装SDK才能正常测试,我们需要了解一点MbedOS系统的基本知识及R01开放板的硬件知识才能开始安装SDK的工作。 1.Mbed OS基础知识 Mbed OS是一个开放源码操作系统,专门用于为物联网(IoT)设备设计的ARM微控制器的平台:需要连接到互联网的低功率、…

百度dueros人工智能-RDA5981(R01开发板)-学习心得-入门及硬件连接

一.入门及硬件连接 自从2017年12月10号收到在深圳比特跳动技术有限公司的淘宝网上购买的百度dueros人工智能-R01开发板,当拆开快递包裹的时候,我本以为可以到手就玩,结果当场就懵了,配件如下图所示: 配件从左到右分别是MIC语音输入,天线,发声喇叭,R01开放板。看见这四…

从RDA5981A/B/C编译后map文件和datasheet分析内存分配情况

先查看RDA5981的datasheet, 如下图,RDA5981芯片内部有三个RAM区域, I_SRAM,D_SRAM,I_cache, 还可以外挂PSRAM, 内存映射图解释: 在编译目录BUILD\UNO_81C\GCC_ARM\找到*.map文件, 可以搜索到如下地址情况: .data 0x00100080 .bss 0x001017a8 .stack …

RDA5981开发环境搭建

最近有商家在卖带有CC2530 Zigbee模块的板子&#xff08;电子垃圾&#xff09;&#xff0c;我对Zigbee还不是特别感冒&#xff08;没时间研究&#xff09;&#xff0c;倒是看中了同一个板子上的RDA5981模块。我这个人有个特点&#xff0c;没有研究明白的东西&#xff0c;不会轻…

Apache添加PHP模块重启apache服务报错

根据网上教程&#xff0c;在Apache中添加php模块&#xff1a; LoadModule php7_module C:\Program Files\php\php-7.3.4-Win32-VC15-x64\php7apache2_4.dll AddType application/x-httpd-php .php LoadModule php7_module modules/libphp7.so PHPIniDir C:\Program Files\php\…

linux上apache目录在哪,Linux下Apache目录明细

与Apache服务器相关的重要目录和文件如下&#xff1a; /etc/httpd/是Apache服务器的根目录 /etc/httpd/conf/httpd.conf是Apache服务器的主配置文件&#xff0c;其中包含指定文档root的配置 /var/www/html/是Apache服务器的文档根目录 /etc/init.d/httpd是Apache服务器启动脚本…

windows下apache简单配置php解释器

目录 1. apache部署 1.1. 下载安装包 1.2 安装 1.3 文件配置 1.4 进入cmd&#xff0c;执行httpd -k install -n apache 1.5 服务启动 1.6 服务验证 1.7 apache服务搭建至此结束。 2. php环境部署 2.1 php包下载 2.2 添加环境变量 3. apache下加载php解释器 3.1 编写…

宝塔面板定时重启apache、mysql、php5.6等Shell命令

定时重启apache service httpd restart 定时重启mysql service mysqld restart 定时重启php5.6 service php-fpm-56 restart 定时重启php5.7 service php-fpm-72 restart 还有一种定时重启php5.6的方法 /etc/init.d/php-fpm-56 restart 停止推送 php /www/wwwroot/y…

linux环境下,重启Apache服务httpd出现以下错误

重点查看红线圈出的错误信息 之后修改配置/etc/httpd/conf/httpd.conf未见&#xff0c;由错误信息已知是文件的355行组织了它重启&#xff0c;所以只需将其注释掉或者删掉即可。 保存文件 重新启动即可

重启apache下php,怎么重启apache

怎么重启apache&#xff1f; windows下重启Apache ● 首先右击“此电脑”&#xff0c;点击“管理”&#xff1b; ● 在打开的“计算机管理”程序中&#xff0c;双击“服务和应用程序”。 ● 在打开的“计算机管理”程序中&#xff0c;双击“服务”。 ● 在所有的服务列表中&…

安装、启动与停止Apache服务

安装、启动与停止Apache服务 安装Apache相关软件 [rootcentos7 ~]# rpm -q httpd [rootcentos7-1 ~]# mkdir /opt/centos //创建目录/opt/centos [rootcentos7-1 ~]# mount /dev/cdrom /opt/centos //挂载光盘到/opt/centos 下 mount: /dev/sr0 写保护…

Ansys里不同材料属性按照不同颜色显示出来

在plotctrls里面&#xff0c;有numbers的设置&#xff0c;按照材料或者实常数可以将不同部位编号。 编好号之后&#xff0c;就可以对所选的构件染色了 希望有所帮助。

AD生成BOM表_材料清单 (Bill of Material)

打开Altium Designer软件&#xff0c;然后在原理图界面&#xff08;XXX.SchDoc&#xff09;,选择 Reports&#xff08;报告&#xff09;>> Bill of Materials(材料清单)。 显示如下界面&#xff1a; 选择所需要的BOM表表头&#xff0c;BOM表头_comment_Description_desi…

SAP HUM 如何将HU里的物料号换成另外一个物料号?

SAP HUM 如何将HU里的物料号换成另外一个物料号&#xff1f; 比如HU 183221204047&#xff0c;里面的物料号是10000191, 业务因故包错了物料号&#xff0c;希望在继续使用HU号码的前提下将物料号由10000191替换成10000192. 这意味着&#xff0c;需要将该HU拆掉&#xff0c;然后…

NetSuite关于客户料号的管理

NetSuite关于客户料号的管理 NetSuite关于客户料号的管理解决方案步骤 NetSuite关于客户料号的管理 NetSuite中有成熟的解决方案处理客户料号与系统物料编码对应的问题。主要需要安装bundle&#xff0c; ID为47193。 安装Bundle后&#xff0c;可以分配客户的料号与系统中物料…

批次号/订单号生成

概述 在系统内部或与其他系统进行对接对编码有一定自定义规则&#xff0c;包括批次号、订单号&#xff0c;比如 PCH20170727152245000001 编码规范 开头字母 年月日时分秒 序号 &#xff0c;使用存储过程和不使用存储过程两种方式&#xff0c;数据都是存在 mysql 数据库中。…

SAP消耗性物料采购前台操作及后台配置

提示&#xff1a;本人工作之余的学习记录&#xff0c;仅供参考 文章目录 前言 企业里除了库存物料采购外&#xff0c;经常存在非库存物料的采购&#xff0c;由于零星小物件比较多&#xff0c;例如中性笔、文件夹、一次性纸杯、A4纸等办公用品&#xff0c;创建物料&#xff0c;…

一、T100之料件管理

T100之料件管理 一、料件集团数据和据点级数据的区别二、料件基础资料设置2.1 料件分群(先要建好分群&#xff0c;基础资料中要用到)2.2 企业层次参数设置aoos0102.3 据点级数据集团控制设置作业(aooi090)2.4 aooi2502.5 aooi2602.6 aimi010(产品分类码维护作业)2.7 aimi1502.8…

SAP PP 笔记(二)物料

Organizational levels for the material master record and Organization structures&#xff1a;物料主档的组织架构&#xff0c;建立这个料号有哪些层次&#xff0c;比如有集团、工厂、仓位这个层次&#xff0c;也可能有销售区域层次等Material type - industry sector&…

数据库原理与技术 作业及答案 复习用

目录 第一章 绪论 作业第二章 关系数据库 作业第3章 关系数据库标准语言SQL 作业1第3章 关系数据库标准语言SQL 作业2第3章 关系数据库标准语言SQL 作业3⭐第4章 数据库安全性 作业⭐SQL 综合练习⭐第6章 关系数据理论 作业 新⭐第7章 数据库设计 作业 新⭐HBase作业 新 第一章…