51Nod 1390 遊戲得分

2021-07-28 04:49:32 字數 977 閱讀 7432

1390 遊戲得分

topcoder

基準時間限制:1 秒 空間限制:131072 kb 分值: 40 

難度:4級演算法題

a與b兩人玩乙個遊戲,這個遊戲有若干個回合(可能0回合)。遊戲的回合依次標號為1,2,3,4...。你不需要關心遊戲的內容,現在只要知道第i回合勝者會獲得2*i-1分,每回合遊戲不存在平局。現在已知a和b在遊戲結束時各獲得了x分與y分的總分。問a在這個遊戲中至少獲勝了幾盤?如果給出的x與y一定不會出現那麼輸出-1.

input

多組測試資料,第一行乙個整數t,表示測試資料數量,1<=t<=5

每組測試資料有相同的結構構成:

每組資料一行包含兩個整數x,y,表示a與b最後的總得分,其中0<=x,y<=1,000,000,000,000。

output

每組資料一行輸出,即a最少獲勝了幾盤,非法的x與y對輸出-1。
input示例

3

8 17

17 8

0 0

output示例

2

30

孔炤(題目提供者)

題解:由每輪得分情況可以看出,其每輪得分比為公差為2的等差數列;

由前n項和公式可以看出,當a+b為完全平方數時才有解

其次,求a的最少回合數就是求b贏的最大回合數

b贏的回合數的特性在於b的得分和贏得回合其奇偶性要一致。

#include#include#include#includeusing namespace std; 

typedef long long ll;

#define maxn 1000005

int main()

t=sqrt(b+0.5);

t-=(b+t)&1;

printf("%lld\n",x-t);

}}

51nod 1390 遊戲得分

原題鏈結 1390 遊戲得分 topcoder 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 a與b兩人玩乙個遊戲,這個遊戲有若干個回合 可能0回合 遊戲的回合依次標號為1,2,3,4.你不需要關心遊戲的內容,現在只要知道第i回合勝者會獲得2 i 1分,每回合遊...

51nod 1390 遊戲得分

根據題意,在等差數列 f x 2 x 1 中,選取盡可能少的元素,使得元素總和等於x。若 x y 不是平方數,或 x 2 或 y 2 那麼x y不合法,輸出 1。先在等差數列的後面幾項中,選取 f down f up 使得其和剛好不小於x。若其和剛好等於x,那麼明顯就是這幾項。若大於x,則可以有某個...

51nod 硬幣遊戲

有乙個簡單但是很有趣的遊戲。在這個遊戲中有乙個硬幣還有一張桌子,這張桌子上有很多平行線 如下圖所示 兩條相鄰平行線之間的距離是1,硬幣的半徑是r,然後我們來拋硬幣到桌子上,拋下之後硬幣有時候會和一些直線相交 相切的情況也算是相交 有時候不會。請你來計算一下拋一次硬幣之後,該硬幣和直線相交數目的期望。...