zoukankan      html  css  js  c++  java
  • 【吉比特】G-bits2017技术类岗位编程题

    求素数

    输入M、N,1 < M < N < 1000000,求区间[M,N]内的所有素数的个数。素数定义:除了1以外,只能被1和自己整除的自然数称为素数

    输入描述:

    两个整数M,N

    输出描述:

    区间内素数的个数
    示例1

    输入

    2 10

    输出

    4
    #include<iostream>
    #define K 1000001
    using namespace std;
    char p[K+1] = {1,1,0};  //数组前三个数 0 1 2 分别为 合数、合数、素数 
    int main() 
    {
        int i,j;
        for(i = 2; i <= K/10; ++i) //防止p[i*j]越界 
        {
            if(!p[i])
                for(j = 2; i*j <=K ; ++j)  //判断是否为合数 
                    p[i*j] = 1; //是合数    
         } 
        
        int M,N,count;
        cin>>M;
        cin>>N;
        count=0;
        for(i=M; i<=N; i++)
            if(!p[i])  //如果p[i]为合数,则跳过,如果为素数,执行count 
                count++;
        cout<<count;
    }

    分析:

    由素数的概念在大于1的整数中,只能被1和自己本身整除的数。

    在大于1的整数中,只要类似 m*n 得到的数都不是素数。用 1 表示非素数,用 0 表示素数。则: p[i*j] = 1 即为找出所有的非素数。

    K/10 是为了防止 p[i*j] 越界,当然除以20、30也是可以的!

    参考资料链接:

    【模板小程序】求小于等于N范围内的质数

    牛客网解答

    最大差值

    给定一个未排序的数列,找到此数列在已排序状态下的两个相邻值的最大差值,少于两个值时返回0。例如:给定数列 [1,3,2,0,1,6,8] 则 最大差值为3。注意:请尽量使用时间复杂度为O(n)的方案。

    输入描述:

    第一行输入单个整数N作为数列的大小,第二行输入所有数列中的元素M,共N个。0 < N <= 1000000, 0 < M < 2100000000

    输出描述:

    数列的最大差值
    示例1

    输入

    3
    1 10 5

    输出

    5
    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    int main(){
        int N;
        while(cin>>N){
            vector<int> array(N);
            for(int i=0;i<(int)array.size();++i){
                cin>>array[i];
            }
        sort(array.begin(),array.end());  //先排序 
        vector<int> chazhi(N);  //开一个数组,存入相邻元素差值
        chazhi[0] = 0;  //数组初始化 
        int max_chazhi = 0;
        for(int i=1;i<(int)chazhi.size();++i){
            chazhi[i]=array[i]-array[i-1];
            max_chazhi = chazhi[i]>max_chazhi ? chazhi[i]: max_chazhi;
            }
        cout<<max_chazhi<<endl;
        }
        
        return 0;
    }

    分析:

    研究了一下别人的代码,整体思路就是先对输入的数列进行从小到大的排序,接着创建一个数组,存入排序后相邻两个数之间的差值,接着再挨个比较大小,最后输出最大差值。

    参考资料链接:

    牛客网解答

    vector

    algorithm->sort

  • 相关阅读:
    Kubernetes 内存资源限制实战
    kubernetes 资源管理概述
    终于对探针下手了
    容器和容器云
    理解 Kubernetes volume 和 共享存储
    理解 docker volume
    docker 镜像管理之 overlay2 最佳实践
    docker 资源限制之 cgroup
    Debug Assertion Failed!
    Qt 字符串转md5
  • 原文地址:https://www.cnblogs.com/OctoptusLian/p/8665631.html
Copyright © 2011-2022 走看看