程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 2149 Public Sale(巴士博弈)

HDU 2149 Public Sale(巴士博弈)

編輯:C++入門知識

題目:

http://acm.hdu.edu.cn/showproblem.php?pid=2149

題解:

先假設一種簡單情況,M=N+1(M為地價,N為加價),這種情況下,無論先加價者無論如何出價,假設為X,另一個人都可以以 M-X 的價格買下土地(因為X大於1,M-X必在可出價的范圍內)。到這裡是不是有點感覺了,如果 M%(N+1)==0,假設 M=k*(N+1) 無論先加價者出什麼價X,另一個人都可以以(N+1-X)的價格出價,使M=(k-1)*(N+1),按這種方式到最後先出價者還是要面臨M=N+1的局面。到這裡是不是已經可以不用往下看了。 所以如果 M%(N+1)==0 先出價者必輸。 M%(N+1)!=0,先出價者出 M%(N+1) 的價格必贏。

代碼:

#include
int main()
{
	int N,M;
	while(~scanf("%d%d",&N,&M))
	{
		if(M>=N)
		{
			for(int i=N;i

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved