AtCoder Beginner Contest 096題解

                AtCoder Beginner Contest 096

A題題解:判斷a和b的大小即可

AC代碼:

#include <iostream>
using namespace std;
const int maxn = 55;
#define _for(i,a,b) for(int i=a;i<=b;i++)
int n,m,a[maxn];
int main(int argc, char const *argv[])
{
    cin>>n>>m;
    if(n<=m)cout<<n<<endl;
    else cout<<n-1<<endl;
    return 0;
}

B題題解:最大結果就是三者的最大值一直乘下去然後求和

AC代碼:

#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, char const *argv[])
{
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    int ans = max(a,b);
    ans = max(ans,c);
    int sum = ans;
    while(d>0)
    {
        ans*=2;
        d--;
    }
    sum = a+b+c+ans-sum;
    cout<<sum<<endl;
    return 0;
}

C題題解:no的情況只有單個#的時候,所以直接判斷是否存在單#即可

AC代碼:

#include <iostream>
using namespace std;
#define _for(i,a,b) for(int i=a;i<=b;i++)
const int maxn = 55;
char s[maxn][maxn];
int n,m,ans;
int xx[]={1,-1,0,0},yy[]={0,0,1,-1};
bool check(int x,int y)
{
    _for(i,0,3)
    {
        int nowx = x+xx[i];
        int nowy = y+yy[i];
        if(nowx>n||nowx<1||nowy>m||nowy<1)continue;
        if(s[nowx][nowy]=='#')return false;
    }
    return true;
}
int main(int argc, char const *argv[])
{
    cin>>n>>m;
    _for(i,1,n)
    {
        _for(j,1,m)cin>>s[i][j];
    }
    _for(i,1,n)
    {
        _for(j,1,m)if(s[i][j]=='#')if(check(i,j))ans = 1;
    }
    if(ans)cout<<"No"<<endl;
    else cout<<"Yes"<<endl;
    return 0;
}

D題題解:找N個數,其中任意五個數和爲合數,那麼先質數篩篩出小於55555的質數,然後找n個質數,每個質數都滿足%5==1,那麼最後和就是合數。

AC代碼:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
#define _for(i,a,b) for(int i=a;i<=b;i++)
const int maxn = 55699;
int n,sum,prime[maxn],isprime[maxn],ans[maxn];
void ge()
{
    _for(i,2,maxn)
    {
        if(prime[i]==0)
        {
            isprime[++sum]=i;
            for(int j=i*2;j<=maxn;j+=i)prime[j]=1;
        }
    }
}
int main(int argc, char const *argv[])
{
    cin>>n;
    ge();
    int k = 0;
    _for(i,1,sum)
    {
        if(isprime[i]%5==1)
        {
            cout<<isprime[i]<<" ";
            k++;
        }
        if(k==n)
        {
            cout<<endl;
            return 0;
        }
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章