Giải thích giúp đề bài tập trò chơi bốc sỏi

Lập trình thực hiện trò chơi bốc sỏi với máy tính: Có N viên sỏi, 2 người chơi lần lượt bốc từ 1 đến 5 viên. Người bốc vên sỏi cuối luôn thắng/thua. Hãy viết chương trình thực hiện nhập N (N thuộc [30…50) ) và máy tính là một người chơi. Máy tính đi trước và luôn thắng nếu được (N=6,12,… người đi trước thua)

thầy em cho đề như này nhưng em cũng chưa hiểu đề lăm ( đoạn máy tính đi trước và luôn thắng nếu được…)
mọi người có thể giải thích giúp em cái đề được không ạ

Hì, tớ cũng ko hiểu chỗ lủng củng trên. Cậu thử hỏi thầy giáo xem? :smiley:

dạ vâng em cảm ơn mọi người đã quan tâm , em đang đợi thầy trả lời

em hiểu đề của bài này rồi , như sau ạ:
nhập vào số sỏi N thuộc [30,50] , mỗi lượt được bốc số sỏi từ 1-5, người bốc viên cuối thắng
máy tính được bốc trước, lập trình sao cho máy tính luôn thắng nếu có thể (khi mà số sỏi chia hết cho 6 thì đến lượt của ai bốc trước ng đó sẽ thua) !

em làm như thế này đã đúng chưa, đã tối ưu chưa mng sửa giúp em ạ

#include<stdio.h>
#include<math.h>
#include <stdlib.h>
#include <time.h>

int main(){
int N,a=0,b=0,i,s,p;
char ch;
srand(time(NULL));

printf("Nhap tong so vien soi(30-50):");
scanf("%d",&N);// nhap N
for(i=1;N>0;i++){
	if(i%2!=0){// luot cua may tinh
		if(N%6!=0){
		s=N%6;
		}else {
			do{
				s=1+rand()%5;
				}while(s>N);
		};
	a=a+s;
		N=N-s;
		printf("\nmay tinh vua lay %d vien tong so soi cua may tinh la %d",s,a);
		printf("\ntong so soi con lai la %d",N);		
	}else
	
	
	{//luot cua nguoi
		printf("\nnhap so soi ban muon lay :");
		scanf("%d",&p);
	 	while(p<=0||p>=6||p>N){
	 		printf("\nban nhap sai, moi nhap lai so soi (0-5) va nho hon  tong so soi con lai:");
	 		scanf("%d",&p);
	 		
		 };
		 b=b+p;
		 N=N-p;
		printf("\nban vua lay %d vien soi, tong so soi ban co la %d",p,b);
		printf("\ntong so soi con lai la %d",N);
	};
};
if(i%2==0){printf("\nmay tinh thang");
}else {
printf("\nban thang");}


	return 0;
	
}
1 Like

Bạn tham khảo thử

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