妙手(打表题)
首先由题中给的数据范围可知本题肯定要大表找规律,下面我们先弄个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; }