#include
#include
#include
#include
#include
/*p1080 國王遊戲
輸入1 大臣數n
2 國王左手數 國王右手數
3-n+2 大臣左手數 大臣右手數
輸出 獲得金幣最多的大臣獲得金幣數量
*/using
namespace std;
int king_left =
0, king_right =0;
int minister_number =0;
//int max_gold = 0;
int a_front[
10005]=
;//int mem[1005] = ;
int*max_gold =
newint
[5005];
int max_length =0;
struct minister
;vector minister_each;
///*尋找最小序列的遞迴函式*/
//void find_min()
bool
cmp(minister a, minister b)
/*大數乘法*/
intbigmul
(int
*temp_a_front,
int a_front_szie,
int left_hand)
int k =0;
while
(true)if
(temp_a_front[k]
>=10)
} k++;}
// give_a_number++;
// return temp_a_front;
return give_a_number;
}//大數除法 被除數陣列 陣列尺寸 除數
int*
bigdivid
(int
*temp_a_front,
int a_front_szie,
int divisor)
return divide_result;
}int
main()
;// bigmul(test,5,10);
// for(int i=0; i<6;i++)
///*大數除法效果測試*/
// int test[15] = ;
// auto *test_out = new int[15];
memset(test_out,0, sizeof(int)*15);
// test_out = bigdivid(test,5,2);
// for(int i=0; i<5;i++)
/*程式開始*/
/*輸入並排序主鍵*/
minister temp_minister_each =
; cin >> minister_number;
cin >> king_left >> king_right;
for(
int i =
0; i < minister_number;
++i)
sort
(minister_each.
begin()
, minister_each.
end(
), cmp)
;// /*排序演算法測試*/
// for(auto it = minister_each.begin(); it != minister_each.end(); it++)
// find_min();
///*找最大的數 需要用高精度*/
int a_number =1;
//人的號數 第乙個人是國王
int temp_length =0;
int*temp_gold =
newint
[5005];
/*初始化king_left*/
int h =0;
a_front[0]
= king_left;
//最新所有left_hand相乘後的值
while
(a_front[h]
>=10)
// cout << a_number//int count =0;
//for
(vector
::iterator it = minister_each.
begin()
; it != minister_each.
end(
); it++)//
temp_gold =
bigdivid
(a_front, a_number,
(*it)
.right_hand)
;//先除後乘
temp_length = a_number;
a_number =
bigmul
(a_front, a_number,
(*it)
.left_hand)
;// while(a_front[a_number+1] != 0)
//消除首位為零的影響
while
(temp_gold[temp_length -1]
==0)//temp數字位數大於max
if(temp_length > max_length)
max_gold = temp_gold;
//temp數字位數等於max 但大於max
}else
if(temp_length == max_length)
max_gold = temp_gold;
break;}
}}// free(temp_gold); //釋放temp_gold
//delete temp_gold;
}//cout << temp_length << " temp_length";
//cout << max_length << endl;//除錯
///*輸出*/
//max_length = max_length - 1;
for(
int i =
0; i < max_length; i++
)// cout << endl;
// cout << "a_number" << a_number << endl;
// for (int i = 0; i < a_number; i++)
return0;
}
洛谷 P1080 國王遊戲
原題 題目描述 恰逢 h 國國慶,國王邀請 n 位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這 n 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是 排在該大臣前...
洛谷P1080 國王遊戲
洛谷p1080 國王遊戲 題目描述 恰逢 h 國國慶,國王邀請 n 位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這 n 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數...
洛谷P1080 國王遊戲
恰逢 h國國慶,國王邀請n位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這 n 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是 排在該大臣前面的所有人的左手上的數...