有生活的题解(饿啊)
2026-09-13 17:22:58
发布于:宁夏
15阅读
0回复
0点赞
正宗肥美老题解(有生活)
没啥好说的,直接给代码(让我看看那个不自觉地小白复制了)
- 实际上自己写一遍最好
稍有细节请勿追究
#include<bits/stdc++.h>
using namespace std;
using ll=long long;//你当然可以直接写long long
const int N=1e5+10;//你当然可以直接手写100010
int a[N];//符合原著
bool is_prime(int sum){//is_prime函数不会还有人不会吧,用bool不会有人不知道吧
if(sum<=1)return false;//质数定然大于1如果都小于1了还是质数吗
for(int i=2;i*i<=sum;i++){//易错点:有猪头肉喜爱用 i=1 开局(别问我咋知道的)
//这里的 i*i 是为了减少时间复杂度的,
//原理不会的小白自己学。也可以写成 i<=sqrt(sum);
//但我不喜欢,不是万能头的话还要加cmath
if(sum%i==0)return false;//如果有除了1和本身以外的因数证明非prime
}
return true;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
ll sum=0;
for(int i=1;i<=n;i++){
if(is_prime(a[i])&&m-a[i]<0){
break;//如果满足退出条件就退出循环
}
if(!is_prime(a[i])){
continue;//不是的话就算了,继续找
}else if(is_prime(a[i])&&m-a[i]>=0){
m-=a[i];//这个可以有,必须拿下,所以m就得减一减了
sum++;//多一个,sum++
}
}
cout<<sum<<endl;//输出sum
}
看到这里你应该会了吧,这么简单的题,快去自己写吧===》
这里空空如也







有帮助,赞一个