妙手(打表题)

首先由题中给的数据范围可知本题肯定要大表找规律,下面我们先弄个100*100的棋盘,然后多次输入找规律

下面这是打表代码

#include<algorithm>
#include<cstring>
using namespace std;
const int N=100;
bool st[N][N];
int ans=1;
int d1,d2;
typedef pair<int,int> PII;
PII q[N*N];

#define x first
#define y second

void bfs()
{
    int hh=0,tt=-1;
    q[++tt]={0,0};
    st[0][0]=true;

    int dx[]={d1,d1,-d1,-d1,d2,d2,-d2,-d2};
    int dy[]={d2,-d2,d2,-d2,d1,-d1,d1,-d1};

    while(hh <= tt)
    {
        PII t=q[hh++];

        for(int i=0;i < 8;i++)
        {
            int a=t.x+dx[i];
            int b=t.y+dy[i];

            if(a < 0 || a >= 100 || b < 0 || b >= 100) continue;
            if(st[a][b]) continue;
            st[a][b]=true;
            q[++tt]={a,b};
            ans++;
        }
    }
}

int main()
{
    cin>>d1>>d2;

    bfs();


    if(ans == 10000) puts("Yes");
    else puts("No");

    return 0;
}

这是本题代码

#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;

    if(n == 1 && m == 1)
    {
        puts("No");
        return 0;
    }

    if(__gcd(n,m) == 1) puts("Yes");
    else puts("No");

    return 0;
}

宝石

#include<algorithm>
#include<cstring>
#include<unordered_map>
using namespace std;
const int N=1510;
unordered_map<int,int> mp;
int a[N];

int main()
{
    int n; cin>>n;

    for(int i=1;i <= n;i++) cin>>a[i];

    reverse(a+1,a+n+1);

    int cnt=0;
    for(int i=1;i <= n;i++)
    {
        for(int j=1;j < i;j++)
        {
            if(!a[i] && mp[0])
            {
                cnt++;
                break;
            }

            if(!a[j]) continue;

            if(a[i]%a[j] == 0 && mp[a[i]/a[j]])
            {
                cnt++;
                break;
            }
        }

        for(int j=1;j <= i;j++)  mp[a[i]*a[j]]=1;
    }

    cout<<cnt<<endl;
    return 0;
}