a821: 文字遊戲-困難版
標籤 : stack string
通過比率 : 1人/2人 ( 50% ) [非即時]
評分方式:
Tolerant

最近更新 : 2023-09-01 19:02

內容

$2023$ 年 $2$ 月 $17$ 號下午,一個日常的放學後時間

大家在程設班群組中討論要不要線上上課時

有人提出了「第三屆」以前好像可以和以前一樣使用紙本備審資料

進階教學 $William$ 提出一個觀點:但我們這屆高二畢業時是第五年的 $108$ 課綱,所以,我們到底算不算呢?

冠甫電神說:若意指「第三年」的話,應該就說「第一屆」就好了

大家討論地如火如荼,$frankie$ 在旁邊看得很開心

沒想到自己說一個線上上課就引出了這神奇的話題~

......

以下對話省略,而且對話中可能有些許虛構成份!!

......

 

$frankie$ 由衷地覺得:國文真的是太深奧了!

而且別忘記程設班群中還有一個因為國文奇蹟似地考出高分,因此避免被當掉的進階助教 $chrislaiisme$

因為這些文字遊戲之玄妙讓大家都玩不起來,請你幫幫群組中的各位,告訴他們加密過的字符們,讓大家加入這一個「文字遊戲」

 

文字遊戲規則如下:

1. 由一個英數字元開始

2. 大家最喜歡的字母目前文字中 $ASCII$ 碼最大的那個字母

3. 每一回合,大家說出一個操作

操作分為以下四種:

$insert\ c$ ,插入一個字母於文字後方

$delete\ pos$ ,只要第 $pos$ 位之前的字母,之後的都拋棄,若 $pos$ 大於等於字串長度,視為無效操作, $pos = 0$,相當於刪除整個字串

$max$ ,將大家最喜歡的字母插入在字串後方,若沒有視為插入最小的 '0' 字元 $(ASCII\ 48)$

$modify\ c$ ,將最後插入的字元換成自己想要的,若沒有則視為 $insert$

4. 最後,有一個隨機布林值 $B$,決定是否要加密

若 $B$ 是 $1$ 才進行以下動作

若眾人最喜歡的字母換成 $ASCII$ 碼後是質數,由小到大排,合數則反之

若眾人最喜歡的字母換成 $ASCII$ 碼後是奇數,將字串反轉,並刪除重覆的字元

將最喜歡的字母換成 $ASCII$ 碼後的所有位數總和 $(持續進行直到 < 10)$ 設為 $x$

最後將字串後方 $(字串長度\ \%\ x)$ 位字母移到前方即得最後密碼

輸入說明

多測資點,每個測資點單筆測資

最前面有一行 $T$,代表有 $T$ 筆測資 

每筆測資中:

第一行有一個數 $N$ 代表接下來有 $N$ 個人加入遊戲

第二行有一個英數字元 $C$ 代表起始字母

之後有 $N$ 行代表操作

操作分以下四種:

$1\ c$,代表 $insert$

$2\ c$,代表 $modify$

$3\ pos$,代表 $delete$

$4$,代表 $max$

其中 $c$ 為字元,$pos$ 為整數

輸出說明

輸出最後玩出來的密碼並換行

範例輸入
1
10
A
1 1
4
3 2
1 b
2 T
4
1 d
1 g
4
1 c
1
範例輸出
A1gdcT
測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (25%): 1.0s , <50M
公開 測資點#1 (25%): 1.0s , <50M
公開 測資點#2 (25%): 1.0s , <50M
公開 測資點#3 (25%): 1.5s , >50M
提示 :

 

所有正整數必在 $int$ 內

$B ∈ bool$

 

要壓一下,請在主函式 $main()$ 的下方打上以下兩行:

$cin.tie(0);$

$ios\_base::sync\_with\_stdio(0);$

 

1. $25\ \%$ 只有 $insert$、$modify$ 兩種操作,$B = false$,$N = 10000$,$c$ 屬於英數字元,$T = 1000$

2. $50\ \%$ 只有 $insert$、$modify$、$delete$ 三種操作,$B = false$,$N = 10000$,$c$ 屬於英數字元,$T = 1000$

3. $75\ \%$ 所有操作皆含入,$B=false$,$N = 10000$,$c$ 屬於英數字元,$T = 1000$

4. $100\ \%$ 無特別限制,$N = 10000000$,$c$ 屬於英數字元,$T = 3$

 

範測解釋,下面放出每一筆輸入後的字串:

1. A1

2. A1A

3. A1

4. A1b

5. A1T

6. A1TT

7. A1TTd

8. A1TTdg

9. A1TTdgg

10. A1TTdggc

1 代表要加密

g = 103

所以由小到大排:

1AATTcdgg

是質數也一定是奇數 (這邊不會出現 $ASCII=2$ 的狀況,英數字元中沒有)

所以拿掉後變:

gdcTA1

$1+0+3=4, 6\ \%\ 4 = 2$

將最後兩位搬來前方,就變出答案:A1gdcT

 

 

8/26 19:57 加強測資,並將所有程式碼全部 $\text{REJUDGE}$

標籤:
stack string
出處:
[管理者:
frankie (34104)
]


編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」