我又又来了!
2024-02-21 18:36:22
发布于:浙江
- 扑克牌
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[20000];
int f[20000][105];
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>a[i];
}
for(int i=0;i<=n;i++){
f[i][0]=1;
for(int j=1;j<=i;j++){
f[i][j]=(f[i-1][j]+f[i-1][j-1])%10007;
}
}
long long res=1;
int cur=n;
for(int i=1;i<=m;i++){
res=(res*f[cur][a[i]])%10007;
cur-=a[i];
}
cout<<res;
return 0;
}
- 最佳得分
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin>>n;
if(n<=3){
cout<<1*(n-1);
return 0;
}
int res=1;
if(n%3==1) {
res=4;
n-=4;
}
else if(n%3==2){
res=2;
n-=2;
}
while(n){
res*=3;
n-=3;
}
cout<<res;
return 0;
}
- 连续质数之和
#include<bits/stdc++.h>
using namespace std;
const int N=4e7;
int prime[N],cnt,t,n;
bool isPrime[N+5];
void oula(){
for(int i=2;i<=N;i++) isPrime[i]=1;
for(int i=2;i<=N;i++){
if(isPrime[i]==1) prime[++cnt]=i;
for(int j=1;j<=cnt&&i*prime[j]<=N;j++){
isPrime[i*prime[j]]=0;
if(i%prime[j]==0) break;
}
}
}
int main(){
oula();
cin>>t;
while(t--){
int res=0,ans=0;
cin>>n;
for(int i=1,j=1;i<=cnt;i++){
if(prime[i]>n) break;
res+=prime[i];
while(res>n&&j<i){
res-=prime[j];
j++;
}
if(res==n) ans++;
}
cout<<ans<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个