题解:P1664 每日打卡心情好
思路:模拟。用变量
输入新的一天的打卡状态时,如果这天没有打卡,就将
如何快速计算出 pow(2,c-1),1<<c-1 和暴力计算。不过需要注意的是,在后两种方法中,int(甚至 long long)。因此,需要先将
另外注意
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);cin.tie(0);
int s;cin>>s;
int n=0,c=0;
int ans=0;
bool a;
while(s--){
cin>>a;
if(a){
if(c)n=max(0,n-(1<<min(c-1,25)));
c=0,n++;
if(n>=1)ans++;
if(n>=3)ans++;
if(n>=7)ans++;
if(n>=30)ans++;
if(n>=120)ans++;
if(n>=365)ans++;
}else{
c++;
}
}
cout<<ans;
return 0;
}