幾周前,一家著名軟體公司公升級了即時通訊軟體。使用者組發布了乙個排名系統。乙個小組的每個成員都有乙個位於他的暱稱附近的等級。級別顯示組中成員的活動程度。
每個成員都有乙個基於分數的行為。通過這種方法確定水平:
水平百分比
此級別的成員數目
lv1/
所有得分均為零的成員
lv2/
所有不能達到3級以上但具有正分數的成員
lv330%
⌊(具有正分數的成員的數量) * 30%⌋
lv420%
⌊(具有正分數的成員的數量) * 20%⌋
lv57%
⌊(具有正分數的成員的數量) * 7%⌋
lv63%
⌊(具有正分數的成員的數量) * 3%⌋
[x]是小於或等於 x的最大整數。
得分越高的會員越高。如果兩個成員有相同的分數,那麼加入組的較早的成員將得到更高的水平。如果仍然存在關聯,較小id的使用者將得到更高的級別。
請編寫乙個程式來計算組中每個成員的級別。
輸入:有多個測試用例。輸入的第一行是指示測試用例個數的整數t。對於每個測試用例:
第一行包含乙個整數n(1<n<=2000),表示乙個組中成員的數目。
下n行,每行包含三個部分(由乙個空間分隔):
第i個成員ai的id(0 <=ai <=1000000000)。每個成員的id是唯一的。
第i個成員加入該集團的日期,格式為yyyy/mm/dd。日期將在[ 1900 / 01 / 01, 2014 / 04 / 06 ]的範圍內。
第i個成員的分數si(0<si=9999)。
輸出:對於每個測試用例,輸出n行。每行包含乙個字串,表示第i個成員的級別。
樣本輸入:
1
5123456 2011/03/11 308
123457 2011/03/12 308
333333 2012/03/18 4
555555 2014/02/11 0
278999 2011/03/18 308
樣本輸出:
lv3
lv2lv2
lv1lv2
**如下:
#include #include #include #include using namespace std;
const int max_n = 2000 + 100;
int n, t, cnt;
struct rank
;int y, m, d, id, score;
rank r[max_n];
int a[max_n];
int cmp(int m, int n)
}int lv[6];
int main()
sort(a, a + n, cmp);
lv[6] = (int)(cnt * 0.03);
lv[5] = (int)(cnt * 0.07);
lv[4] = (int)(cnt * 0.2);
lv[3] = (int)(cnt * 0.3);
lv[2] = cnt - lv[6] - lv[5] - lv[4] - lv[3];
lv[1] = n - cnt;
for(int i = 0; i < n; i++)
else if(lv[5] != 0)
else if(lv[4] != 0)
else if(lv[3] != 0)
else if(lv[2] != 0)
else
r[a[i]].lv = "lv1";
}for(int i = 0; i < n; i++)
cout << r[i].lv << endl;
}return 0;
}
每日一題力扣227
給你乙個字串表示式s,請你實現乙個基本計算器來計算並返回它的值。整數除法僅保留整數部分。class solution defcalculate self,s stack pre op num 0 for i,each in enumerate s ifeach.isdigit num 10 num ...
23 7每日一題acm
司令部的將軍們打算在n m的網格地圖上部署他們的炮兵部隊。乙個n m的地圖由n行m列組成,地圖的每一格可能是山地 用 h 表示 也可能是平原 用 p 表示 如下圖。在每一格平原地形上最多可以布置一支炮兵部隊 山地上不能夠部署炮兵部隊 一支炮兵部隊在地圖上的攻擊範圍如圖中黑色區域所示 如果在地圖中的灰...
每日一題 1
題目詳情 peter喜歡玩數字遊戲,但數獨這樣的遊戲對他來說太簡單了,於是他準備玩乙個難的遊戲。遊戲規則是在乙個n n的 裡填數,規則 對於每個輸入的n,從左上角開始,總是以對角線為起點,先橫著填,再豎著填。這裡給了一些樣例,請在樣例中找到規律並把這個n n的 列印出來吧。輸入描述 多組測試資料 資...