题目
在牛客网,签到的人是有奖励的!!!
对于星期一签到的人会获得 的奖励
对于星期二签到的人会获得 的奖励
······
对于星期天签到的人会获得 的奖励
牛牛签到的这一个月是第 年的第 个月
牛牛忘记了这个月的 1 日是星期几
但是他知道自己签过到的日期
他想知道自己最少可以获得多少奖励
解题思路
对于每月的第 日和第 日,如果 ,则这两日的星期是相同的。
暴力枚举:假设这月的第 1 日是星期一/二/.../六/日,分别计算每月奖励总和,返回最小值。
C++代码
#include<iostream> #include<vector> using namespace std; int main(){ int a, b; int h[7]; int c; cin >> a >> b; for(int i=0; i<7; ++i) cin >> h[i]; int k = 0; vector<int> week(7,0); while(cin >> c){ if(c==1) week[k]+=1; ++k; k%=7; } int ans = 0x3f3f3f3f; for(int i=0; i<7; ++i){ int j = i; int sum = 0; int t = 0; while(t<7){ sum += h[j]*week[t]; ++t; ++j; j%=7; } ans = min(ans, sum); } cout << ans << endl; return 0; }