试题编号: 201903-3 试题名称: 损坏的RAID5
这题的数据未免也太水了,题目的意思好像默认是每块磁盘装载数据的长度是相等的。我写了判断每次取数据是否会超过每块磁盘存的数据的长度,然而并没有什么卵用。交上去20分,写了个数据测了下,如果要求的块太大的话,这样下面计算得出的对应磁盘号会太大,然后就会runtime error,所以求出最大块号,如果查询的块超过最大块号,就输出错误就可以了。
#include <bits/stdc++.h>
using namespace std;
int N,S,L,M;
long long number(char c)
{
if (c>='0'&&c<='9') {
return c-'0';
}
else {
return 10+c-'A';
}
}
long long getNum(string s)
{
return number(s[0])*(long long)16+number(s[1]);
}
int main()
{
// freopen("in.txt","r",stdin);
ios::sync_with_stdio(false);
// string s;
// cin>>s;
// cout<<getNum(s)<<endl;;
cin>>N>>S>>L;
string disk[N];
int num;
int len;
for (int i=0;i<L;i++) {
cin>>num;
cin>>disk[num];
len=disk[num].length();
// cout<<disk[num]<<endl;
}
int maxid=len/8*(N-1);
N--;
cin>>M;
int query;
for (int i=0;i<M;i++) {
cin>>query;
if (query<0||query>=maxid) {
cout<<'-'<<endl;
continue;
}
int floor=query/(N*S);
int rem=query-floor*S*N;
int mod=rem%S;
int beg=floor*8*S+mod*8;
int rescnt=rem/S+1;
int resbeg=N-floor%(N+1);
int resdisk=(resbeg+rescnt)%(N+1);
if (disk[resdisk]=="") {
if (L<N) {
cout<<'-'<<endl;
continue;
}
long long ans[10];
memset(ans,0,sizeof(ans));
bool flag=false;
for (int i=0;i<=N;i++) {
if (i!=resdisk) {
if (beg+8>disk[i].length()) {
flag=true;
break;
}
for (int j=0;j<4;j++) {
ans[j]=ans[j]^getNum(disk[i].substr(beg+j*2,2));
}
}
}
if (flag) {
cout<<'-'<<endl;
continue;
}
for (int j=0;j<4;j++) {
// printf("%02X",ans[j]);
cout<<setiosflags(ios::uppercase)<<hex<<ans[j];
}
cout<<endl;
// puts("");
}
else {
string s=disk[resdisk].substr(beg,8);
if (beg+8>disk[resdisk].length()) {
cout<<'-'<<endl;
continue;
}
cout<<s<<endl;
}
}
return 0;
}
/**<
00010203
00010203
04050607
24252627
Process returned 0 (0x0) execution time : 0.239 s
Press any key to continue.
3 2 2
0 000102030405060710111213141516172021222324252627
1 A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7
2
2
5
2 1 2
0 000102030405060710111213141516172021222324252627
1 000102030405060710111213141516172021222324252627
2
0
1
*/
11 2 10
0 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
1 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
2 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
3 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
4 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
5 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
6 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
7 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
8 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
9 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
4
-1
10
15
1000
试题编号: 201903-3 试题名称: 损坏的RAID5的更多相关文章
- CCF 试题编号: 201909-4 试题名称: 推荐系统
这题是stl的综合应用,map要想快,直接上unordered_map,这样查询接近O(1),是不是很嗨皮. 思路其实还是很简单的,type+id做个Hash,由于set.insert的第一个返回值是 ...
- csp 201903-3 损坏的RAID5
问题描述 试题编号: 201903-3 试题名称: 损坏的RAID5 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 答题栏 核
- Libre 6006 「网络流 24 题」试题库 / Luogu 2763 试题库问题 (网络流,最大流)
Libre 6006 「网络流 24 题」试题库 / Luogu 2763 试题库问题 (网络流,最大流) Description 问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同 ...
- 震惊!几道Python 理论面试题,Python面试题No18
本面试题题库,由公号:非本科程序员 整理发布 第1题: 简述解释型和编译型编程语言? 解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候 ...
- 面试前赶紧看了5道Python Web面试题,Python面试题No17
目录 本面试题题库,由公号:非本科程序员 整理发布 第1题: Flask中的请求上下文和应用上下文是什么? 第2题:django中间件的使用? 第3题: django开发中数据做过什么优化? 第4题: ...
- 千万不要错过这几道Python面试题,Python面试题No16
第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...
- 损坏的RAID5
损坏的RAID5 string讀入卡cin 関同步 ios::sync_with_stdio(false) 由塊號映射到具體位置 塊號id對應第col個字符串 字符串開始的位置st #include& ...
- CSP 试题编号201803-2 Java实现
package HB; import java.util.Scanner; public class Test_06 { public static void main(String[] args) ...
- CSP 试题编号201803-1 Java实现
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner input ...
随机推荐
- 阿里云linux挂载云盘
阿里云购买的第2块云盘默认是不自动挂载的,需要手动配置挂载上. 1.查看SSD云盘 sudo fdisk -l 可以看到SSD系统已经识别为/dev/vdb 2.格式化云盘 sudo mkfs.ext ...
- Echat 地图样式格式
1.白色 mapStyle: { styleJson: [{ 'featureType': 'water', 'elementType': 'all', 'stylers': { 'color': ' ...
- Java Web代码审计流程与漏洞函数
常见框架与组合 常见框架 Struts2 SpringMVC Spring Boot 框架执行流程 View层:视图层 Controller层:表现层 Service层:业务层 Dom层:持久层 常见 ...
- 【译】通过 Rust 学习解析器组合器 — Part 1
原文地址:Learning Parser Combinators With Rust 原文作者:Bodil 译文出自:掘金翻译计划 本文永久链接:https://github.com/xitu/gol ...
- Array,String,Set,Map
热爱前端的17号诶 积跬步以致千里 积怠惰以致深渊 博客园 首页 新随笔 联系 管理 随笔 - 58 文章 - 2 评论 - 65 最新数组方法(包括es6) for...of 是 ES6 新引入 ...
- 深浅拷贝_python
一.浅拷贝 拷贝第一层的东西,如其他列表修改他们共同的第二层(或更深),他管不了,只能跟着变. 用处:很少用,用不同账号关联共享: import copyhusband= ['chen','123', ...
- 调用百度地图api隐藏版权信息
调用百度地图API隐藏右下角版权信息 商用的话建议不要隐藏,避免侵权. 隐藏前: 隐藏后: .BMap_cpyCtrl { display: none; } .anchorBL { display: ...
- php curl请求 header头携带参数
$headers = array( 'api-key:'.$key, 'authorization:'.$authorization, ); //初始化 $curl = c ...
- 【做题笔记】洛谷P1036 选数
作为一个 DFS 初学者这题真的做得很惨...其实窝学 DFS 一年多了,然后一开始就学不会最近被图论和数据结构打自闭后才准备好好学一学233 一开始,直接套框架,于是就有 #include < ...
- 【转载】Java开发中的23种设计模式
转自:http://zz563143188.iteye.com/blog/1847029 一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建 ...