#P2035. 计算机笔试复习题.6

计算机笔试复习题.6

(5) 输入两个正整数 aa , bb ( 2a1002 \le a \le 1002b50002 \le b \le 5000 ),求出满足下列条件的 P、Q 的个数。

条件 1: P、Q 是正整数。

条件 2: 要求 P、Q 以 aa 为最大公约数,以 bb 为最小公倍数。

试求:满足条件的所有可能的两个正整数的个数。

#include<bits/stdc++.h>
using namespace std;
int a b,ans;
int main()
{
	cin>>a>>b;
	int ji=a*b,i;
	for(i=1;i<=填空(1);i++)
	{
		if(ji%i==0){
			int w=0;
			for(int j=min(i, 填空(2) );;j--)
				if(i%j==0 && 填空(3)==0 ){
					w=j;
					填空(4);
				}
			if(w==a)
				ans++;
		}
	} 
	
	ans*=2;
	if(i*i==ji)
		填空(4);
	cout<<ans;
	return 0;
}
  1. 填空(1) 处应填 {{ select(1) }}
  • sqrt(ji)
  • ji/2
  • ji/i
  • ji
  1. 填空(2) 处应填 {{ select(2) }}
  • sqrt(i)
  • ji/2
  • ji/i
  • ji
  1. 填空(3) 处应填 {{ select(3) }}
  • ji%a
  • ji%b
  • ji/i%j
  • ji/j%i
  1. 填空(4) 处应填 {{ select(4) }}
  • continue
  • break
  • i++
  • i--
  1. 填空(5) 处应填 {{ select(5) }}
  • ans/2
  • ans/2-1
  • ans++
  • ans--

第(6)题超出了市赛小学组的考试难度,不作为复习范围

(6) 有一个 N 行 M 列的二维表格,行的编号从上往下是 0 至 N-1,列的编号从左往右是 0 至 M-1 。每个格子是一个字符,其中.’表示可通行格子,“#” 表示障碍物格子。你的目标是从左上角格子 (0,0) 走到右下角格子 (N-1,M-1),每一步可以走到当前格子的上、下、左、右,4 个相邻的格子之一,但是不能走入障碍物格子。但是很遗憾,给你的二维表格保证,一开始你是无法完成目标的。对于某个障碍物格子,假如把该障碍物格子变成可通行格子就能使得可以从左上角格子顺利走到右下角格子,那么该障碍物格子称为“善良障碍物格子”。你的任务是输出二维表格总共有多少个“善良障碍物格子”

输入格式

第一行,两个整数 N 和 M (2 <= N,M <= 100 )。

接下来是 N 行 M 列的二维表格。

输出格式

一个整数。

#include<bits/stdc++.h>
using namespace std;
int n,m,k,ans,fx[5]={}-1,0,0,1},fy[5]={0,-1,1,0};
int a[100+5][100+5],b[100+5][100+5],c[100+5][100+5],d[100+5][100+5];
char p;
void dfs(int x,int y)
{
	填空(1); 
	for(int i=0;i<4;i++)
	{
		int xx=x+fx[i],yy=y+fy[i];
		if( 填空(2) ){
			if(k==0) b[xx][yy]=1;
			else c[xx][yy]=1;
		}
		if(xx<1|xx>n||yy<1||yy>m||d[xx][yy]==1||a[xx][yy]==1)
			填空(3);
		填空(4);
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++) {
			cin>>p;
			if(p=='#') a[i][j]=1;
		}
	dfs(1,1);
	k++;
	dfs(n,m);
	for(int i=1;i<=n:i++)
		for(int j=1;j<=m;i++)
			if( 填空(5) ) ans++;

	cout<<ans;
	return 0;
}
  1. 填空(1) 出应填 {{ select(6) }}
  • a[x][y]=1
  • b[x][y]=1
  • c[x][y]=1
  • d[x][y]=1
  1. 填空(2) 出应填出应填 {{ select(7) }}
  • a[xx][yy] == 1
  • b[xx][yy] == 1
  • c[xx][yy] == 1
  • d[xx][yy] == 1
  1. 填空(3) 出应填 {{ select(8) }}
  • k++
  • ans++
  • continue
  • break
  1. 填空(4) 出应填 {{ select(9) }}
  • dfs(x,y)
  • dfs(x,yy)
  • dfs(xx,y)
  • dfs(xx,yy)
  1. 填空(5) 出应填 {{ select(10) }}
  • b[i][j] == 1 && d[i][j] == 1
  • c[i][j] == 1 && d[i][j] == 1
  • b[i][j] == 1 && c[i][j] == 1
  • b[i][j] == 1 && c[i][j] == 1 && d[i][j] == 1