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



京公网安备 11010502036488号