选择题+编程题 官网有:GESP官网
这次的五级有点难啊, 比八级难…
编程题 1:小杨的幸运数
知识点: 筛法+后缀答案dp
思路:
首先筛法预处理出每个数是否是幸运数;
然后ans[i]表示i幸运化后的幸运数是多少:
那么如果i 是幸运数, ans[i] = i;
否则 i 不是幸运数, ans[i] = ans[i]+1
如果不后缀预处理答案 ans[i]数组, 每次往后查找可能会超时.
源代码
#include<bits/stdc++.h>
using namespace std;
int a,n,h[1100001],ans[1100001];
int t=1001*1001;
int main(){
cin>>a>>n;
for(int i=1;i*i<=t;++i)
if(i*i>=a)
for(int j=i*i;j<=t;j+=i*i)
h[j]=1;
for(int i=t;i>=1;--i)
if(h[i]) ans[i]=i;
else ans[i]=ans[i+1];
while(n--){
int x;scanf("%d",&x);
if(ans[x]==x)


2892

被折叠的 条评论
为什么被折叠?



