原題鏈結
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<=5output每組測試資料有相同的結構構成:
每組資料一行包含兩個整數x,y,表示a與b最後的總得分,其中0<=x,y<=1,000,000,000,000。
每組資料一行輸出,即a最少獲勝了幾盤,非法的x與y對輸出-1。input示例
3output示例8 17
17 8
0 0
2假設總共玩了n盤那麼a,b獲得的分數總和為(1+n)*n/2*2-n = n*n;所以首先判斷x+y是否為平方數若不是則輸出-1,在判斷x和y是否為2,是則輸出-1,因為2只能由兩個1表示出,不可能30
n = sqrt(x+y) n為a和b總共玩的局數,若x或y等於零,或x <= 2 * d-1直接輸出答案
若x>2*d-1那麼把x -= 2 *d -1, d--, ans++不斷執行這三個操作直到 x <= 2 * d - 1, 若x&1, ans++, 否則 ans += 2
#include #define maxn 5000005
using namespace std;
typedef long long ll;
int main()
if(x == 0)
else if(y == 0)
else
if(x <= 2 * d - 1)
else
else
printf("%d\n", ans+2);
break;}}
} }return 0;
}
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 1390 遊戲得分
1390 遊戲得分 topcoder 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 a與b兩人玩乙個遊戲,這個遊戲有若干個回合 可能0回合 遊戲的回合依次標號為1,2,3,4.你不需要關心遊戲的內容,現在只要知道第i回合勝者會獲得2 i 1分,每回合遊戲不存在平...
51nod 硬幣遊戲
有乙個簡單但是很有趣的遊戲。在這個遊戲中有乙個硬幣還有一張桌子,這張桌子上有很多平行線 如下圖所示 兩條相鄰平行線之間的距離是1,硬幣的半徑是r,然後我們來拋硬幣到桌子上,拋下之後硬幣有時候會和一些直線相交 相切的情況也算是相交 有時候不會。請你來計算一下拋一次硬幣之後,該硬幣和直線相交數目的期望。...