百度面试题

来源:互联网 发布:mac如何设置两个桌面 编辑:程序博客网 时间:2024/06/06 07:05

1.给你一个自然数n,求[6,n]之内的所有素数中,两两之和为偶数的那些偶数。

void EratosthenesSieve(vector<bool> &A,int n){    for(int i=2;i*i<=n;++i)    {        if(A[i])        {            for(int j=i*i;j<=n;j+=i)A[j]=false;        }    }  }vector<int> f(int n){    vector<int> result;    if(n<6)return result;    vector<bool> A(n+1,true);    EratosthenesSieve(A,n);    for(int i=6;i<=n-1;++i)    {        if(!A[i])continue;        for(int j=i+1;j<=n;++j)        {            if(!A[j])continue;            result.push_back(i+j);        }    }    result.erase(unique(result.begin(),result.end()),result.end());    return result;}

2.用天平(只能比较,不能称重)从一堆小球中找出其中唯一一个较轻的,使用x次天平,最多可以从y个小球中找出较轻的那个,求y与x的关系式。

y=3^x


3.输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如,输入数组{32,321},则输出32132。

//仿函数struct cmp{    bool operator()(string x,string y)    {        return (x+y)<(y+x);    }};string f(vector<int> a){    int n=a.size();    vector<string> b(n);    for(int i=0;i<n;++i)    {        stringstream stream;        stream<<a[i];          stream>>b[i];    }    sort(b.begin(),b.end(),cmp());    string result;    for(int i=0;i<n;++i)result+=b[i];    return result;}




0 0
原创粉丝点击