zoukankan      html  css  js  c++  java
  • PTA乙级1013

    题目

    题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805309963354112

    中文题。

    思路

    素数打表+控制格式

    注意

    1. 数组直接开10e4+10,cnt开在外面的话,运行出来是错误的,但是提交是AC的,难道后台数据问题,郁闷死我了,我说怎么代码挺对,本地输出不对。可能边界上的点在不同编译器下访问存在问题。

    2. 需要注意边界上的数据,也就是如果a和b同时都给出10e4,这样子的话输出就是104729,影响开的数组的大小。所以之后写题的时候数组大小不一定要根据题意去开大10个空间,需要考虑最大的数据,根据这个数据去开,而且记录素数的数组p和标记数组book我们需要开大一个空间,也是因为边界。

    3. 这题是简单题,但是因为数组边界的问题导致在不同编译器上输出有问题。

    4. 其实我还是有问题,为什么本地错误提交正确,我觉得地址访问问题不太可能是随机访问的。

    AC代码

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    #define inf 0x3f3f3f3f
    typedef long long ll;
    
    //const int N=10e4+10e3;
    const int N=104729; // N=104728的时候第四组数据错误(a=b=10e4)
    int a,b,p[N+1],book[N+1],cnt=0;
    // 考虑一下边界数据、N的大小、最后一个数据b=10e4的时候,输出104729
    
    void init()
    {
        for(int i=2;i<=N;i++)
        {
            if(!book[i])
            {
                p[++cnt]=i;
                for(int j=i+i;j<=N;j+=i)
                    book[j]=1;
            }
        }
    }
    
    int main()
    {
        cin>>a>>b;
        init();
        int x=1;
        for(int i=a;i<=b;i++,x++) // 相当于外面int x=0; 函数体里面x++
        {
            if(x%10==0||(i==b)) // if((i+1)%10==0||(i==b))
                cout<<p[i]<<endl;
            else
                cout<<p[i]<<" ";
        }
        return 0;
    }
    
  • 相关阅读:
    Java 线程池
    Java 内存模型
    img图片铺满父元素
    element-ui 表单复杂数据类型校验
    element-ui 栅格布局 一行五等分
    element-ui表单只验证单个字段
    记录
    js-字符串全局替换
    vue3-搭建项目-vue2-vu3使用上的变化
    小程序引入echarts
  • 原文地址:https://www.cnblogs.com/OFSHK/p/14494721.html
Copyright © 2011-2022 走看看