Cách lồng && và || vào nhau

mình làm bài lập trình bài: cho bàn cờ n*n, nhập vào tạo độ ô tướng , tìm xem quân tượng có thể thăm nhiều nhất bao nhiêu ô?
VD nhạp n=3, tọa độ (2,1)
output 4
có đoạn lập trình mình viết là if((a==1&&b==n)||(a==n&&b==1)||(a==1&&b==1)||(a==n&&b==n)) bị sai
mình muốn viết là nếu tọa độ (a,b)={(1,n) hoặc (n,1) hoặc (1,1) hoặc (n,n)} thì viết như nào ạ???

#include <stdio.h>
#include <math.h>
int main(){
    long long n,a,b;
    scanf("%lld",&n);
    scanf("%lld",&a,&b);
    if(n%2==0){
    	printf("%lld",n*n/2);
	}
	else{
		if((a==1&&b==n)||(a==n&&b==1)||(a==1&&b==1)||(a==n&&b==n)){
			printf("%lld",(n*n+1)/2);
		}
		else{
			printf("%lld",(n*n-1)/2);
		}
	}
}

if của bạn để như vậy là đúng rồi. Nếu muốn gọn hơn thì:

if ((a == 1 || a == n) && (b == 1 || b == n))

Còn tại sao code bạn không chạy thì chắc là ở đây :point_down:

Bạn mới chỉ nhập a thôi chứ chưa có format cho b.
Phải là scanf("%lld %lld", &a, &b); :slight_smile:


Với lại bạn đọc bài :point_down: để biết cách post code với mardown nha. :wink:

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?