50,854
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
第一题:数列求和
#include <iostream>
using namespace std;
int main ()
{
int a = 1, b =1 , c = 1, d;
for(int i = 4; i <= 20190324; i++)
{
d = (a + b + c) % 10000;
a = b;
b = c;
c = d;
}
printf("%04d", d);
return 0;
}
第二题:质数
#include <iostream>
using namespace std;
int main()
{
int res = 3;
for(int i = 6; ; i++) //因为5已经是质数了,所以我们少算了一个
{
bool flag = true;
for(int j = 2; j * j <= i; j++)
{
if(i % j == 0)
{
flag = false;
break;
}
}
if(flag) res ++;
if(res == 2019 ){
cout << i;
break;
}
}
return 0;
}
第三题饮料换购
#include<cstdio>
#include<iostream>
using namespace std;
int n;
int main ()
{
cin >> n;
int res = n;
while(n >= 3)
{
res += n / 3;
n = n / 3 + n % 3;
}
cout << res << endl;
return 0;
}
第四题:巧克力,详细注释
//贪心
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
struct qiaokl //用结构体来读入,很巧妙的思维
{
int val, days,num;
//结构体里使用操作符重载
bool operator<(const qiaokl & w)const{
return val > w.val;
}
}a[N];
bool cmp(qiaokl &t, qiaokl &d)
{
return t.days > d.days;//让他的保质期由大到小
}
int main ()
{
int x, n;
cin >> x >> n;
for(int i = 0; i < n; i++)
{
cin >> a[i].val >> a[i].days >> a[i].num;
}
sort(a, a + n, cmp);//重载cmp
priority_queue<qiaokl> qkl;
long long ans = 0;//计算价格
int now = x; // 现在买到第几天的巧克力
int cnt = 0; //第几种巧克力
qkl.push(a[cnt++]); //就是把每种巧克力的价格 保质期 天数放进去
while(!qkl.empty() && now > 0)
{
while(a[cnt].days >= now && cnt < n)
{
qkl.push(a[cnt++]);
}
qiaokl t = qkl.top(); //获取队列的顶栈
qkl.pop();
ans += t.val;
now --;//把安排好的巧克力天数删除
t.num--;
if(t.num >0) qkl.push(t); //直到没有可以符合的巧克力
}
if(now > 0) cout << -1 << endl;
else cout << ans << endl;
return 0;
}