題目鏈接
題目背景
在洛谷中,打卡不只是一個簡單的滑鼠點擊動作,通過每天在洛谷打卡,可以清晰地記錄下自己在洛谷學習的足跡,通過每天打卡,來不斷地暗示自己:我又在洛谷學習了一天,進而幫助自己培養恒心、耐心、細心,此外,通過打卡,還可以獲取經驗值獎勵,經驗值的多少在一定程度上反映了你在洛谷的資歷和成就,通過打卡累積活躍值,漸漸升級,會讓你感覺“離神犇越來越近了”,
題目描述
洛谷的打卡系統與其他網站的打卡系統一樣,連續”打卡天數越多,每次打卡獲得的獎勵也就越多,同時連續天數加上一天,然而,于其他網站只要一天不打卡,連續天數就要清零,與其他網站不同的是,洛谷的打卡更具有人性化,如果多天不打卡,連續天數僅僅只是減少,當遺漏天數越少,減少的天數也就越少,規則是減少 2n-1 天,n 為連續遺漏天數,連續天數在下一次打卡時清算,打卡連續天數不會小于 0,也就是說,如果每隔一天打卡,那么連續天數就不會變了,
當連續天數達到以下天數時,給予不同的活躍值獎勵:
1 天:獎勵 1(千里之行,始于足下)
3 天:獎勵 2(堅持 3 天了,加油!)
7 天:獎勵 3(曜日輪回)
30 天:獎勵 4(月圓月缺,習慣養成)
120 天:獎勵 5(堅持四個月了!)
365 天:獎勵 6(一年四季都堅持下來了!真不容易!)
小 a N天前在洛谷注冊了一個賬號,雖然當時立志每天都要打卡,但發現這不太容易做到,現在知道他 N 天的的打卡記錄,小 a 希望得知他通過打卡,在 N 天能獲得多少活躍值?
輸入格式
第 11 行一個整數 N,
接下來 N 行,每行一個整數 1 或 0,代表當天是否打過卡,
輸出格式
一個整數,表示獲得的活躍值!
輸入輸出樣例
輸入 #1
12
1
1
1
1
1
0
0
0
1
0
1
1
輸出 #1
12
代碼:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n, m, p = 0, q = 0, r = 0;
cin >> n; //p是遺漏天數 q是連續天數 r是活躍值
for(int i = 0; i < n; i++)
{
cin >> m;
if(m == 1) //打卡
{
if(p > 0) q = q - pow(2, p - 1);
if(q < 0) q = 0;
p = 0;
q++;
if(q < 3) r += 1;
else if(3 <= q && q < 7) r += 2;
else if(7 <= q && q < 30) r += 3;
else if(30 <= q && q < 120) r += 4;
else if(120 <= q && q < 365) r += 5;
else if(q >= 365) r += 6;
}
else p++;
}
cout << r << endl;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/260324.html
標籤:其他
上一篇:表白墻
