acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 资讯
  • 竞赛
  • 讨论
  • 团队
  • 商城
登录
注册
题目详情提交记录(0)
  • 用二维动态数组递推(较简单)

    (PS:这个方法比较快,关于为啥n是1到8,因为到9就没了) 整体思路:从长度为2时依次递推(长度为1时明显是2,3,5,7),将上一次长度的每一项放在前面,并尝试在后面加一个一位奇数(除5以外)时是否为质数(因为末尾为偶数或0,5不可能为质数)。 所以这道题要掌握以下知识点: 1.判断质数 2.二维动态数组 3.递推

    userId_undefined
    芙芙世界第一
    时间刺客空间掌握者递归·套娃学徒模拟·模拟练习生秩序白银
    64阅读
    0回复
    1点赞
  • 肋骨要断了

    #include <bits/stdc++.h> using namespace std; bool prime(int n){ if(n<2) return 0; for(int i=2;i<=sqrt(n);i++){ if(n%i==0){ return 0; } } return 1; }//判断质数函数 vector <vector <int>> v(15);//PS:别忘记把项数最大值加5~10 int main(){ int n; cin>>n; v[1].push_back(2); v[1].push_back(3); v[1].push_back(5); v[1].push_back(7);//定义长度为1时的数组,ps:别怕下面的三个for(doge) for(int i=2;i<=n;i++){ //递推 for(int j=0;j<v[i-1].size();j++){//遍历上一次的每一项 for(int k=1;k<10;k+=2){//尝试加1,3,7,9 int temp=v[i-1][j]*10+k; if(k!=5&&prime(temp)){ v[i].push_back(temp); }//如果加后是质数,则加入当前数组,顺便去掉加5(即上面的奇数除5以外) } } } for(int i=0;i<v[n].size();i++){ cout<<v[n][i]<<endl; }//输出 }

    userId_undefined
    未知
    模拟·模拟练习生倔强青铜冒泡宗师→排序元老
    7阅读
    0回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页