返回列表 發帖

2025成大初賽_簽到難題

簽到難題(signed‑inproblem)
問題敘述
Are you signed in?
No, I’m unsigned int!
剛抵達高中生邀請賽的參賽者unsignedint 很疑惑,明明自己的名牌上就寫著大大的
unsigned int,為何工作人員都問自己是不是 signed int?
以下我們將故事主角unsigend int 稱為 ui,且之後出現的所有”unsigned int” 都是指
unsigned int 這個變數型態而不是 ui。
ui 實際表示的unsigned int 的值稱為 a,現在給你a的初始值和b這兩正整數,你有
q 次操作,每次可以選擇+-*/中其中一個為運算子opt,並使a變為signed(a)optb。
由於ui 討厭被認錯,他希望你找出在最好的操作順序下,最多可以有幾次操作,在
該次操作結束後a的結果能被認出是unsignedint 而不是signed int?
對於一個unsigned int x 來說,可以被認出是 unsigned int 的條件是:在相同 32 bit
下,signed(x) 跟 unsigned(x) 表示的值不同。
例如,11111111111111111111111111111111(32 個1)在unsignedint對應的是4,294,967,295,
而在signed int 對應的則是-1,所以認的出來,而 00000000000000000000000000000000
(32 個0)在signed 和 unsigned int 對應的都是 0,所以認不出來。
輸入說明
第一行有兩正整數a和b
第二行有一正整數q
輸出說明
輸出一整數,代表在最好的操作順序下,最多有幾次操作後的a能被認出?
測資限制
• 1≤a,b≤231−1
1
•1≤q≤106
範例測資
範例輸入1
1010
2
範例輸出1
1
範例輸入2
335544322
100
範例輸出2
95
對於範例一來講,最好的操作順序為
1.a=signed(a)-b,此時a=0,signed(a)=0
2.a=signed(a)-b,此時a=4294967286,signed(a)=-10
由於只有在第二次操作後,a!=signed(a),所以答案就是1
2
May

返回列表