#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int get_unit_digit_sum(int a, int b) {
return (a + b) % 10;
}
int main() {
int initial_p_money, initial_h_money;
int bet_per_round;
int p_money, h_money;
int p_win_count, h_win_count;
int p_streak, h_streak;
int p_max_streak, h_max_streak;
int day = 1;
int total_round = 0;
int total_p_win_count = 0, total_h_win_count = 0;
int total_p_streak = 0, total_h_streak = 0;
int target_total_money;
printf("กรอกจำนวนเงินเริ่มต้นของผู้เล่น: "); scanf("%d", &initial_p_money);
printf("กรอกจำนวนเงินเริ่มต้นของเจ้ามือ: "); scanf("%d", &initial_h_money);
printf("กรอกจำนวนเงินเดิมพันต่อรอบ: "); scanf("%d", &bet_per_round);
printf("กรอกจำนวนเงินเป้าหมายรวมของ P (เงินคงเหลือถึงจำนวนนี้จะตัดจบ): "); scanf("%d", &target_total_money);
char temp_filename[] = "/storage/emulated/0/Download/CodingC/log_tmp.txt";
if (fp == NULL) {
printf("ไม่สามารถสร้างไฟล์บันทึกได้\n"); return 1;
}
while (1) {
p_money = initial_p_money;
h_money = initial_h_money;
p_win_count = h_win_count = 0;
p_streak = h_streak = p_max_streak = h_max_streak = 0;
fprintf(fp
, "=== วันที่ %d ===\n", day
); printf("\n=== วันที่ %d ===\n", day
);
int prev_p_money = p_money;
int prev_h_money = h_money;
while (p_money >= bet_per_round && h_money >= bet_per_round) {
prev_p_money = p_money;
prev_h_money = h_money;
int p_number
= rand() % 37; int h_number
= rand() % 37;
p_money -= bet_per_round;
h_money -= bet_per_round;
int p_point = get_unit_digit_sum(p_number / 10, p_number % 10);
int h_point = get_unit_digit_sum(h_number / 10, h_number % 10);
printf("P ได้ %d (%d)\n", p_number
, p_point
); fprintf(fp
, "P ได้ %d (%d)\n", p_number
, p_point
); printf("H ได้ %d (%d)", h_number
, h_point
); fprintf(fp
, "H ได้ %d (%d)", h_number
, h_point
);
if (p_point == 0 && h_point != 0) {
// P ชนะด้วย 0 (จ่าย 3x)
// P ได้เงินเดิมพันของตัวเอง + เดิมพันของ H + ได้เงินเพิ่มอีก 1 เท่า
p_money += bet_per_round * 3;
// H ถูกหักเพิ่มอีก 1 เท่า (นอกจากที่หักไปตอนแทงแล้ว)
h_money -= bet_per_round;
p_win_count++; p_streak++;
h_streak = 0;
if (p_streak > p_max_streak) p_max_streak = p_streak;
printf(" ===== P ชนะด้วยแต้ม 0! จ่าย 3x \n"); fprintf(fp
, " ===== P ชนะด้วยแต้ม 0! จ่าย 3x \n"); } else if (h_point == 0 && p_point != 0) {
// H ชนะด้วย 0
h_money += bet_per_round * 2;
h_win_count++; h_streak++;
p_streak = 0;
if (h_streak > h_max_streak) h_max_streak = h_streak;
printf(" ===== H ชนะด้วยแต้ม 0! ได้เงินเดิมพัน x2\n"); fprintf(fp
, " ===== H ชนะด้วยแต้ม 0! ได้เงินเดิมพัน x2\n"); } else if (p_point > h_point) {
// P ชนะปกติ
p_money += bet_per_round * 2;
p_win_count++; p_streak++;
h_streak = 0;
if (p_streak > p_max_streak) p_max_streak = p_streak;
} else {
// H ชนะปกติ
h_money += bet_per_round * 2;
h_win_count++; h_streak++;
p_streak = 0;
if (h_streak > h_max_streak) h_max_streak = h_streak;
}
int p_diff = p_money - prev_p_money;
int h_diff = h_money - prev_h_money;
printf("เงินคงเหลือ: P = %d (%+d) | H = %d (%+d)\n\n", p_money
, p_diff
, h_money
, h_diff
); fprintf(fp
, "เงินคงเหลือ: P = %d (%+d) | H = %d (%+d)\n\n", p_money
, p_diff
, h_money
, h_diff
);
total_round++;
if (p_money >= target_total_money) {
break;
}
}
double p_win_rate_day = (double)p_win_count * 100 / (p_win_count + h_win_count);
double h_win_rate_day = (double)h_win_count * 100 / (p_win_count + h_win_count);
total_p_win_count += p_win_count;
total_h_win_count += h_win_count;
if (p_streak > total_p_streak) total_p_streak = p_streak;
if (h_streak > total_h_streak) total_h_streak = h_streak;
fprintf(fp
, "--- จบวันที่ %d ---\n", day
); fprintf(fp
, "P ชนะวันนี้ %d ครั้ง | ชนะติดกันสูงสุด = %d\n", p_win_count
, p_max_streak
); fprintf(fp
, "H ชนะวันนี้ %d ครั้ง | ชนะติดกันสูงสุด = %d\n", h_win_count
, h_max_streak
); fprintf(fp
, "เปอร์เซ็นต์ชนะประจำวันของ P: %.2f%%\n", p_win_rate_day
); fprintf(fp
, "เปอร์เซ็นต์ชนะประจำวันของ H: %.2f%%\n\n", h_win_rate_day
);
printf("--- จบวันที่ %d ---\n", day
); printf("P ชนะวันนี้ %d ครั้ง | ชนะติดกันสูงสุด = %d\n", p_win_count
, p_max_streak
); printf("H ชนะวันนี้ %d ครั้ง | ชนะติดกันสูงสุด = %d\n", h_win_count
, h_max_streak
); printf("เปอร์เซ็นต์ชนะประจำวันของ P: %.2f%%\n", p_win_rate_day
); printf("เปอร์เซ็นต์ชนะประจำวันของ H: %.2f%%\n\n", h_win_rate_day
);
if (p_money >= target_total_money || (h_money <= 0 && p_money > 0)) {
if (p_money >= target_total_money) {
fprintf(fp
, "### ผู้เล่นชนะ! เพราะทำกำไรถึงเป้าหมาย %d บาท ในวันที่ %d ###\n\n", target_total_money
, day
); printf("### ผู้เล่นชนะ! เพราะทำกำไรถึงเป้าหมาย %d บาท ในวันที่ %d ###\n\n", target_total_money
, day
); } else {
fprintf(fp
, "### ผู้เล่นชนะ! เจ้ามือหมดตัวในวันที่ %d ###\n\n", day
); printf("### ผู้เล่นชนะ! เจ้ามือหมดตัวในวันที่ %d ###\n\n", day
); }
double p_win_rate_total = (double)total_p_win_count * 100 / total_round;
double h_win_rate_total = (double)total_h_win_count * 100 / total_round;
fprintf(fp
, "=== สรุปรวมตั้งแต่วันแรกจนวันที่ %d ===\n", day
); fprintf(fp
, "รอบที่เล่นทั้งหมด: %d\n", total_round
); fprintf(fp
, "P ชนะทั้งหมด: %d ครั้ง | ชนะติดกันสูงสุดรวม: %d\n", total_p_win_count
, total_p_streak
); fprintf(fp
, "H ชนะทั้งหมด: %d ครั้ง | ชนะติดกันสูงสุดรวม: %d\n", total_h_win_count
, total_h_streak
); fprintf(fp
, "เปอร์เซ็นต์ชนะรวมของ P: %.2f%%\n", p_win_rate_total
); fprintf(fp
, "เปอร์เซ็นต์ชนะรวมของ H: %.2f%%\n\n", h_win_rate_total
);
printf("=== สรุปรวมตั้งแต่วันแรกจนวันที่ %d ===\n", day
); printf("รอบที่เล่นทั้งหมด: %d\n", total_round
); printf("P ชนะทั้งหมด: %d ครั้ง | ชนะติดกันสูงสุดรวม: %d\n", total_p_win_count
, total_p_streak
); printf("H ชนะทั้งหมด: %d ครั้ง | ชนะติดกันสูงสุดรวม: %d\n", total_h_win_count
, total_h_streak
); printf("เปอร์เซ็นต์ชนะรวมของ P: %.2f%%\n", p_win_rate_total
); printf("เปอร์เซ็นต์ชนะรวมของ H: %.2f%%\n\n", h_win_rate_total
);
char final_filename[150];
snprintf
(final_filename
, sizeof(final_filename
), "/storage/emulated/0/Download/CodingC/%d_ชนะวันที่ %d.txt",
initial_p_money + initial_h_money, day);
rename(temp_filename
, final_filename
);
break;
}
day++;
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCmludCBnZXRfdW5pdF9kaWdpdF9zdW0oaW50IGEsIGludCBiKSB7CiAgICByZXR1cm4gKGEgKyBiKSAlIDEwOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBpbml0aWFsX3BfbW9uZXksIGluaXRpYWxfaF9tb25leTsKICAgIGludCBiZXRfcGVyX3JvdW5kOwogICAgaW50IHJvdW5kOwogICAgaW50IHBfbW9uZXksIGhfbW9uZXk7CiAgICBpbnQgcF93aW5fY291bnQsIGhfd2luX2NvdW50OwogICAgaW50IHBfc3RyZWFrLCBoX3N0cmVhazsKICAgIGludCBwX21heF9zdHJlYWssIGhfbWF4X3N0cmVhazsKICAgIGludCBkYXkgPSAxOwogICAgaW50IHRvdGFsX3JvdW5kID0gMDsKICAgIGludCB0b3RhbF9wX3dpbl9jb3VudCA9IDAsIHRvdGFsX2hfd2luX2NvdW50ID0gMDsKICAgIGludCB0b3RhbF9wX3N0cmVhayA9IDAsIHRvdGFsX2hfc3RyZWFrID0gMDsKICAgIGludCB0YXJnZXRfdG90YWxfbW9uZXk7CgogICAgc3JhbmQodGltZShOVUxMKSk7CgogICAgcHJpbnRmKCLguIHguKPguK3guIHguIjguLPguJnguKfguJnguYDguIfguLTguJnguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJzguLnguYnguYDguKXguYjguJk6ICIpOwogICAgc2NhbmYoIiVkIiwgJmluaXRpYWxfcF9tb25leSk7CiAgICBwcmludGYoIuC4geC4o+C4reC4geC4iOC4s+C4meC4p+C4meC5gOC4h+C4tOC4meC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C5gOC4iOC5ieC4suC4oeC4t+C4rTogIik7CiAgICBzY2FuZigiJWQiLCAmaW5pdGlhbF9oX21vbmV5KTsKICAgIHByaW50Zigi4LiB4Lij4Lit4LiB4LiI4Liz4LiZ4Lin4LiZ4LmA4LiH4Li04LiZ4LmA4LiU4Li04Lih4Lie4Lix4LiZ4LiV4LmI4Lit4Lij4Lit4LiaOiAiKTsKICAgIHNjYW5mKCIlZCIsICZiZXRfcGVyX3JvdW5kKTsKICAgIHByaW50Zigi4LiB4Lij4Lit4LiB4LiI4Liz4LiZ4Lin4LiZ4LmA4LiH4Li04LiZ4LmA4Lib4LmJ4Liy4Lir4Lih4Liy4Lii4Lij4Lin4Lih4LiC4Lit4LiHIFAgKOC5gOC4h+C4tOC4meC4hOC4h+C5gOC4q+C4peC4t+C4reC4luC4tuC4h+C4iOC4s+C4meC4p+C4meC4meC4teC5ieC4iOC4sOC4leC4seC4lOC4iOC4mik6ICIpOwogICAgc2NhbmYoIiVkIiwgJnRhcmdldF90b3RhbF9tb25leSk7CgogICAgY2hhciB0ZW1wX2ZpbGVuYW1lW10gPSAiL3N0b3JhZ2UvZW11bGF0ZWQvMC9Eb3dubG9hZC9Db2RpbmdDL2xvZ190bXAudHh0IjsKICAgIEZJTEUgKmZwID0gZm9wZW4odGVtcF9maWxlbmFtZSwgInciKTsKICAgIGlmIChmcCA9PSBOVUxMKSB7CiAgICAgICAgcHJpbnRmKCLguYTguKHguYjguKrguLLguKHguLLguKPguJbguKrguKPguYnguLLguIfguYTguJ/guKXguYzguJrguLHguJnguJfguLbguIHguYTguJTguYlcbiIpOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHdoaWxlICgxKSB7CiAgICAgICAgcF9tb25leSA9IGluaXRpYWxfcF9tb25leTsKICAgICAgICBoX21vbmV5ID0gaW5pdGlhbF9oX21vbmV5OwogICAgICAgIHBfd2luX2NvdW50ID0gaF93aW5fY291bnQgPSAwOwogICAgICAgIHBfc3RyZWFrID0gaF9zdHJlYWsgPSBwX21heF9zdHJlYWsgPSBoX21heF9zdHJlYWsgPSAwOwogICAgICAgIHJvdW5kID0gMTsKCiAgICAgICAgZnByaW50ZihmcCwgIj09PSDguKfguLHguJnguJfguLXguYggJWQgPT09XG4iLCBkYXkpOwogICAgICAgIHByaW50ZigiXG49PT0g4Lin4Lix4LiZ4LiX4Li14LmIICVkID09PVxuIiwgZGF5KTsKCiAgICAgICAgaW50IHByZXZfcF9tb25leSA9IHBfbW9uZXk7CiAgICAgICAgaW50IHByZXZfaF9tb25leSA9IGhfbW9uZXk7CgogICAgICAgIHdoaWxlIChwX21vbmV5ID49IGJldF9wZXJfcm91bmQgJiYgaF9tb25leSA+PSBiZXRfcGVyX3JvdW5kKSB7CiAgICAgICAgICAgIHByZXZfcF9tb25leSA9IHBfbW9uZXk7CiAgICAgICAgICAgIHByZXZfaF9tb25leSA9IGhfbW9uZXk7CgogICAgICAgICAgICBpbnQgcF9udW1iZXIgPSByYW5kKCkgJSAzNzsKICAgICAgICAgICAgaW50IGhfbnVtYmVyID0gcmFuZCgpICUgMzc7CgogICAgICAgICAgICBwX21vbmV5IC09IGJldF9wZXJfcm91bmQ7CiAgICAgICAgICAgIGhfbW9uZXkgLT0gYmV0X3Blcl9yb3VuZDsKCiAgICAgICAgICAgIGludCBwX3BvaW50ID0gZ2V0X3VuaXRfZGlnaXRfc3VtKHBfbnVtYmVyIC8gMTAsIHBfbnVtYmVyICUgMTApOwogICAgICAgICAgICBpbnQgaF9wb2ludCA9IGdldF91bml0X2RpZ2l0X3N1bShoX251bWJlciAvIDEwLCBoX251bWJlciAlIDEwKTsKCiAgICAgICAgICAgIHByaW50Zigi4Lij4Lit4Lia4LiX4Li14LmIICVkXG4iLCByb3VuZCk7CiAgICAgICAgICAgIGZwcmludGYoZnAsICLguKPguK3guJrguJfguLXguYggJWRcbiIsIHJvdW5kKTsKICAgICAgICAgICAgcHJpbnRmKCJQIOC5hOC4lOC5iSAlZCAoJWQpXG4iLCBwX251bWJlciwgcF9wb2ludCk7CiAgICAgICAgICAgIGZwcmludGYoZnAsICJQIOC5hOC4lOC5iSAlZCAoJWQpXG4iLCBwX251bWJlciwgcF9wb2ludCk7CiAgICAgICAgICAgIHByaW50ZigiSCDguYTguJTguYkgJWQgKCVkKSIsIGhfbnVtYmVyLCBoX3BvaW50KTsKICAgICAgICAgICAgZnByaW50ZihmcCwgIkgg4LmE4LiU4LmJICVkICglZCkiLCBoX251bWJlciwgaF9wb2ludCk7CgogICAgICAgICAgICBpZiAocF9wb2ludCA9PSAwICYmIGhfcG9pbnQgIT0gMCkgewogICAgICAgICAgICAgICAgLy8gUCDguIrguJnguLDguJTguYnguKfguKIgMCAo4LiI4LmI4Liy4LiiIDN4KQogICAgICAgICAgICAgICAgLy8gUCDguYTguJTguYnguYDguIfguLTguJnguYDguJTguLTguKHguJ7guLHguJnguILguK3guIfguJXguLHguKfguYDguK3guIcgKyDguYDguJTguLTguKHguJ7guLHguJnguILguK3guIcgSCArIOC5hOC4lOC5ieC5gOC4h+C4tOC4meC5gOC4nuC4tOC5iOC4oeC4reC4teC4gSAxIOC5gOC4l+C5iOC4sgogICAgICAgICAgICAgICAgcF9tb25leSArPSBiZXRfcGVyX3JvdW5kICogMzsKICAgICAgICAgICAgICAgIC8vIEgg4LiW4Li54LiB4Lir4Lix4LiB4LmA4Lie4Li04LmI4Lih4Lit4Li14LiBIDEg4LmA4LiX4LmI4LiyICjguJnguK3guIHguIjguLLguIHguJfguLXguYjguKvguLHguIHguYTguJvguJXguK3guJnguYHguJfguIfguYHguKXguYnguKcpCiAgICAgICAgICAgICAgICBoX21vbmV5IC09IGJldF9wZXJfcm91bmQ7CiAgICAgICAgICAgICAgICBwX3dpbl9jb3VudCsrOyBwX3N0cmVhaysrOwogICAgICAgICAgICAgICAgaF9zdHJlYWsgPSAwOwogICAgICAgICAgICAgICAgaWYgKHBfc3RyZWFrID4gcF9tYXhfc3RyZWFrKSBwX21heF9zdHJlYWsgPSBwX3N0cmVhazsKICAgICAgICAgICAgICAgIHByaW50ZigiID09PT09IFAg4LiK4LiZ4Liw4LiU4LmJ4Lin4Lii4LmB4LiV4LmJ4LihIDAhIOC4iOC5iOC4suC4oiAzeCBcbiIpOwogICAgICAgICAgICAgICAgZnByaW50ZihmcCwgIiA9PT09PSBQIOC4iuC4meC4sOC4lOC5ieC4p+C4ouC5geC4leC5ieC4oSAwISDguIjguYjguLLguKIgM3ggXG4iKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChoX3BvaW50ID09IDAgJiYgcF9wb2ludCAhPSAwKSB7CiAgICAgICAgICAgICAgICAvLyBIIOC4iuC4meC4sOC4lOC5ieC4p+C4oiAwCiAgICAgICAgICAgICAgICBoX21vbmV5ICs9IGJldF9wZXJfcm91bmQgKiAyOwogICAgICAgICAgICAgICAgaF93aW5fY291bnQrKzsgaF9zdHJlYWsrKzsKICAgICAgICAgICAgICAgIHBfc3RyZWFrID0gMDsKICAgICAgICAgICAgICAgIGlmIChoX3N0cmVhayA+IGhfbWF4X3N0cmVhaykgaF9tYXhfc3RyZWFrID0gaF9zdHJlYWs7CiAgICAgICAgICAgICAgICBwcmludGYoIiA9PT09PSBIIOC4iuC4meC4sOC4lOC5ieC4p+C4ouC5geC4leC5ieC4oSAwISDguYTguJTguYnguYDguIfguLTguJnguYDguJTguLTguKHguJ7guLHguJkgeDJcbiIpOwogICAgICAgICAgICAgICAgZnByaW50ZihmcCwgIiA9PT09PSBIIOC4iuC4meC4sOC4lOC5ieC4p+C4ouC5geC4leC5ieC4oSAwISDguYTguJTguYnguYDguIfguLTguJnguYDguJTguLTguKHguJ7guLHguJkgeDJcbiIpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHBfcG9pbnQgPiBoX3BvaW50KSB7CiAgICAgICAgICAgICAgICAvLyBQIOC4iuC4meC4sOC4m+C4geC4leC4tAogICAgICAgICAgICAgICAgcF9tb25leSArPSBiZXRfcGVyX3JvdW5kICogMjsKICAgICAgICAgICAgICAgIHBfd2luX2NvdW50Kys7IHBfc3RyZWFrKys7CiAgICAgICAgICAgICAgICBoX3N0cmVhayA9IDA7CiAgICAgICAgICAgICAgICBpZiAocF9zdHJlYWsgPiBwX21heF9zdHJlYWspIHBfbWF4X3N0cmVhayA9IHBfc3RyZWFrOwogICAgICAgICAgICAgICAgcHJpbnRmKCIgPT09PT0gUCDguIrguJnguLBcbiIpOwogICAgICAgICAgICAgICAgZnByaW50ZihmcCwgIiA9PT09PSBQIOC4iuC4meC4sFxuIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBIIOC4iuC4meC4sOC4m+C4geC4leC4tAogICAgICAgICAgICAgICAgaF9tb25leSArPSBiZXRfcGVyX3JvdW5kICogMjsKICAgICAgICAgICAgICAgIGhfd2luX2NvdW50Kys7IGhfc3RyZWFrKys7CiAgICAgICAgICAgICAgICBwX3N0cmVhayA9IDA7CiAgICAgICAgICAgICAgICBpZiAoaF9zdHJlYWsgPiBoX21heF9zdHJlYWspIGhfbWF4X3N0cmVhayA9IGhfc3RyZWFrOwogICAgICAgICAgICAgICAgcHJpbnRmKCIgPT09PT0gSCDguIrguJnguLBcbiIpOwogICAgICAgICAgICAgICAgZnByaW50ZihmcCwgIiA9PT09PSBIIOC4iuC4meC4sFxuIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGludCBwX2RpZmYgPSBwX21vbmV5IC0gcHJldl9wX21vbmV5OwogICAgICAgICAgICBpbnQgaF9kaWZmID0gaF9tb25leSAtIHByZXZfaF9tb25leTsKCiAgICAgICAgICAgIHByaW50Zigi4LmA4LiH4Li04LiZ4LiE4LiH4LmA4Lir4Lil4Li34LitOiBQID0gJWQgKCUrZCkgfCBIID0gJWQgKCUrZClcblxuIiwgcF9tb25leSwgcF9kaWZmLCBoX21vbmV5LCBoX2RpZmYpOwogICAgICAgICAgICBmcHJpbnRmKGZwLCAi4LmA4LiH4Li04LiZ4LiE4LiH4LmA4Lir4Lil4Li34LitOiBQID0gJWQgKCUrZCkgfCBIID0gJWQgKCUrZClcblxuIiwgcF9tb25leSwgcF9kaWZmLCBoX21vbmV5LCBoX2RpZmYpOwoKICAgICAgICAgICAgcm91bmQrKzsKICAgICAgICAgICAgdG90YWxfcm91bmQrKzsKCiAgICAgICAgICAgIGlmIChwX21vbmV5ID49IHRhcmdldF90b3RhbF9tb25leSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGRvdWJsZSBwX3dpbl9yYXRlX2RheSA9IChkb3VibGUpcF93aW5fY291bnQgKiAxMDAgLyAocF93aW5fY291bnQgKyBoX3dpbl9jb3VudCk7CiAgICAgICAgZG91YmxlIGhfd2luX3JhdGVfZGF5ID0gKGRvdWJsZSloX3dpbl9jb3VudCAqIDEwMCAvIChwX3dpbl9jb3VudCArIGhfd2luX2NvdW50KTsKCiAgICAgICAgdG90YWxfcF93aW5fY291bnQgKz0gcF93aW5fY291bnQ7CiAgICAgICAgdG90YWxfaF93aW5fY291bnQgKz0gaF93aW5fY291bnQ7CgogICAgICAgIGlmIChwX3N0cmVhayA+IHRvdGFsX3Bfc3RyZWFrKSB0b3RhbF9wX3N0cmVhayA9IHBfc3RyZWFrOwogICAgICAgIGlmIChoX3N0cmVhayA+IHRvdGFsX2hfc3RyZWFrKSB0b3RhbF9oX3N0cmVhayA9IGhfc3RyZWFrOwoKICAgICAgICBmcHJpbnRmKGZwLCAiLS0tIOC4iOC4muC4p+C4seC4meC4l+C4teC5iCAlZCAtLS1cbiIsIGRheSk7CiAgICAgICAgZnByaW50ZihmcCwgIlAg4LiK4LiZ4Liw4Lin4Lix4LiZ4LiZ4Li14LmJICVkIOC4hOC4o+C4seC5ieC4hyB8IOC4iuC4meC4sOC4leC4tOC4lOC4geC4seC4meC4quC4ueC4h+C4quC4uOC4lCA9ICVkXG4iLCBwX3dpbl9jb3VudCwgcF9tYXhfc3RyZWFrKTsKICAgICAgICBmcHJpbnRmKGZwLCAiSCDguIrguJnguLDguKfguLHguJnguJnguLXguYkgJWQg4LiE4Lij4Lix4LmJ4LiHIHwg4LiK4LiZ4Liw4LiV4Li04LiU4LiB4Lix4LiZ4Liq4Li54LiH4Liq4Li44LiUID0gJWRcbiIsIGhfd2luX2NvdW50LCBoX21heF9zdHJlYWspOwogICAgICAgIGZwcmludGYoZnAsICLguYDguJvguK3guKPguYzguYDguIvguYfguJnguJXguYzguIrguJnguLDguJvguKPguLDguIjguLPguKfguLHguJnguILguK3guIcgUDogJS4yZiUlXG4iLCBwX3dpbl9yYXRlX2RheSk7CiAgICAgICAgZnByaW50ZihmcCwgIuC5gOC4m+C4reC4o+C5jOC5gOC4i+C5h+C4meC4leC5jOC4iuC4meC4sOC4m+C4o+C4sOC4iOC4s+C4p+C4seC4meC4guC4reC4hyBIOiAlLjJmJSVcblxuIiwgaF93aW5fcmF0ZV9kYXkpOwoKICAgICAgICBwcmludGYoIi0tLSDguIjguJrguKfguLHguJnguJfguLXguYggJWQgLS0tXG4iLCBkYXkpOwogICAgICAgIHByaW50ZigiUCDguIrguJnguLDguKfguLHguJnguJnguLXguYkgJWQg4LiE4Lij4Lix4LmJ4LiHIHwg4LiK4LiZ4Liw4LiV4Li04LiU4LiB4Lix4LiZ4Liq4Li54LiH4Liq4Li44LiUID0gJWRcbiIsIHBfd2luX2NvdW50LCBwX21heF9zdHJlYWspOwogICAgICAgIHByaW50ZigiSCDguIrguJnguLDguKfguLHguJnguJnguLXguYkgJWQg4LiE4Lij4Lix4LmJ4LiHIHwg4LiK4LiZ4Liw4LiV4Li04LiU4LiB4Lix4LiZ4Liq4Li54LiH4Liq4Li44LiUID0gJWRcbiIsIGhfd2luX2NvdW50LCBoX21heF9zdHJlYWspOwogICAgICAgIHByaW50Zigi4LmA4Lib4Lit4Lij4LmM4LmA4LiL4LmH4LiZ4LiV4LmM4LiK4LiZ4Liw4Lib4Lij4Liw4LiI4Liz4Lin4Lix4LiZ4LiC4Lit4LiHIFA6ICUuMmYlJVxuIiwgcF93aW5fcmF0ZV9kYXkpOwogICAgICAgIHByaW50Zigi4LmA4Lib4Lit4Lij4LmM4LmA4LiL4LmH4LiZ4LiV4LmM4LiK4LiZ4Liw4Lib4Lij4Liw4LiI4Liz4Lin4Lix4LiZ4LiC4Lit4LiHIEg6ICUuMmYlJVxuXG4iLCBoX3dpbl9yYXRlX2RheSk7CgogICAgICAgIGlmIChwX21vbmV5ID49IHRhcmdldF90b3RhbF9tb25leSB8fCAoaF9tb25leSA8PSAwICYmIHBfbW9uZXkgPiAwKSkgewogICAgICAgICAgICBpZiAocF9tb25leSA+PSB0YXJnZXRfdG90YWxfbW9uZXkpIHsKICAgICAgICAgICAgICAgIGZwcmludGYoZnAsICIjIyMg4Lic4Li54LmJ4LmA4Lil4LmI4LiZ4LiK4LiZ4LiwISDguYDguJ7guKPguLLguLDguJfguLPguIHguLPguYTguKPguJbguLbguIfguYDguJvguYnguLLguKvguKHguLLguKIgJWQg4Lia4Liy4LiXIOC5g+C4meC4p+C4seC4meC4l+C4teC5iCAlZCAjIyNcblxuIiwgdGFyZ2V0X3RvdGFsX21vbmV5LCBkYXkpOwogICAgICAgICAgICAgICAgcHJpbnRmKCIjIyMg4Lic4Li54LmJ4LmA4Lil4LmI4LiZ4LiK4LiZ4LiwISDguYDguJ7guKPguLLguLDguJfguLPguIHguLPguYTguKPguJbguLbguIfguYDguJvguYnguLLguKvguKHguLLguKIgJWQg4Lia4Liy4LiXIOC5g+C4meC4p+C4seC4meC4l+C4teC5iCAlZCAjIyNcblxuIiwgdGFyZ2V0X3RvdGFsX21vbmV5LCBkYXkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZnByaW50ZihmcCwgIiMjIyDguJzguLnguYnguYDguKXguYjguJnguIrguJnguLAhIOC5gOC4iOC5ieC4suC4oeC4t+C4reC4q+C4oeC4lOC4leC4seC4p+C5g+C4meC4p+C4seC4meC4l+C4teC5iCAlZCAjIyNcblxuIiwgZGF5KTsKICAgICAgICAgICAgICAgIHByaW50ZigiIyMjIOC4nOC4ueC5ieC5gOC4peC5iOC4meC4iuC4meC4sCEg4LmA4LiI4LmJ4Liy4Lih4Li34Lit4Lir4Lih4LiU4LiV4Lix4Lin4LmD4LiZ4Lin4Lix4LiZ4LiX4Li14LmIICVkICMjI1xuXG4iLCBkYXkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBkb3VibGUgcF93aW5fcmF0ZV90b3RhbCA9IChkb3VibGUpdG90YWxfcF93aW5fY291bnQgKiAxMDAgLyB0b3RhbF9yb3VuZDsKICAgICAgICAgICAgZG91YmxlIGhfd2luX3JhdGVfdG90YWwgPSAoZG91YmxlKXRvdGFsX2hfd2luX2NvdW50ICogMTAwIC8gdG90YWxfcm91bmQ7CgogICAgICAgICAgICBmcHJpbnRmKGZwLCAiPT09IOC4quC4o+C4uOC4m+C4o+C4p+C4oeC4leC4seC5ieC4h+C5geC4leC5iOC4p+C4seC4meC5geC4o+C4geC4iOC4meC4p+C4seC4meC4l+C4teC5iCAlZCA9PT1cbiIsIGRheSk7CiAgICAgICAgICAgIGZwcmludGYoZnAsICLguKPguK3guJrguJfguLXguYjguYDguKXguYjguJnguJfguLHguYnguIfguKvguKHguJQ6ICVkXG4iLCB0b3RhbF9yb3VuZCk7CiAgICAgICAgICAgIGZwcmludGYoZnAsICJQIOC4iuC4meC4sOC4l+C4seC5ieC4h+C4q+C4oeC4lDogJWQg4LiE4Lij4Lix4LmJ4LiHIHwg4LiK4LiZ4Liw4LiV4Li04LiU4LiB4Lix4LiZ4Liq4Li54LiH4Liq4Li44LiU4Lij4Lin4LihOiAlZFxuIiwgdG90YWxfcF93aW5fY291bnQsIHRvdGFsX3Bfc3RyZWFrKTsKICAgICAgICAgICAgZnByaW50ZihmcCwgIkgg4LiK4LiZ4Liw4LiX4Lix4LmJ4LiH4Lir4Lih4LiUOiAlZCDguITguKPguLHguYnguIcgfCDguIrguJnguLDguJXguLTguJTguIHguLHguJnguKrguLnguIfguKrguLjguJTguKPguKfguKE6ICVkXG4iLCB0b3RhbF9oX3dpbl9jb3VudCwgdG90YWxfaF9zdHJlYWspOwogICAgICAgICAgICBmcHJpbnRmKGZwLCAi4LmA4Lib4Lit4Lij4LmM4LmA4LiL4LmH4LiZ4LiV4LmM4LiK4LiZ4Liw4Lij4Lin4Lih4LiC4Lit4LiHIFA6ICUuMmYlJVxuIiwgcF93aW5fcmF0ZV90b3RhbCk7CiAgICAgICAgICAgIGZwcmludGYoZnAsICLguYDguJvguK3guKPguYzguYDguIvguYfguJnguJXguYzguIrguJnguLDguKPguKfguKHguILguK3guIcgSDogJS4yZiUlXG5cbiIsIGhfd2luX3JhdGVfdG90YWwpOwoKICAgICAgICAgICAgcHJpbnRmKCI9PT0g4Liq4Lij4Li44Lib4Lij4Lin4Lih4LiV4Lix4LmJ4LiH4LmB4LiV4LmI4Lin4Lix4LiZ4LmB4Lij4LiB4LiI4LiZ4Lin4Lix4LiZ4LiX4Li14LmIICVkID09PVxuIiwgZGF5KTsKICAgICAgICAgICAgcHJpbnRmKCLguKPguK3guJrguJfguLXguYjguYDguKXguYjguJnguJfguLHguYnguIfguKvguKHguJQ6ICVkXG4iLCB0b3RhbF9yb3VuZCk7CiAgICAgICAgICAgIHByaW50ZigiUCDguIrguJnguLDguJfguLHguYnguIfguKvguKHguJQ6ICVkIOC4hOC4o+C4seC5ieC4hyB8IOC4iuC4meC4sOC4leC4tOC4lOC4geC4seC4meC4quC4ueC4h+C4quC4uOC4lOC4o+C4p+C4oTogJWRcbiIsIHRvdGFsX3Bfd2luX2NvdW50LCB0b3RhbF9wX3N0cmVhayk7CiAgICAgICAgICAgIHByaW50ZigiSCDguIrguJnguLDguJfguLHguYnguIfguKvguKHguJQ6ICVkIOC4hOC4o+C4seC5ieC4hyB8IOC4iuC4meC4sOC4leC4tOC4lOC4geC4seC4meC4quC4ueC4h+C4quC4uOC4lOC4o+C4p+C4oTogJWRcbiIsIHRvdGFsX2hfd2luX2NvdW50LCB0b3RhbF9oX3N0cmVhayk7CiAgICAgICAgICAgIHByaW50Zigi4LmA4Lib4Lit4Lij4LmM4LmA4LiL4LmH4LiZ4LiV4LmM4LiK4LiZ4Liw4Lij4Lin4Lih4LiC4Lit4LiHIFA6ICUuMmYlJVxuIiwgcF93aW5fcmF0ZV90b3RhbCk7CiAgICAgICAgICAgIHByaW50Zigi4LmA4Lib4Lit4Lij4LmM4LmA4LiL4LmH4LiZ4LiV4LmM4LiK4LiZ4Liw4Lij4Lin4Lih4LiC4Lit4LiHIEg6ICUuMmYlJVxuXG4iLCBoX3dpbl9yYXRlX3RvdGFsKTsKCiAgICAgICAgICAgIGZjbG9zZShmcCk7CgogICAgICAgICAgICBjaGFyIGZpbmFsX2ZpbGVuYW1lWzE1MF07CiAgICAgICAgICAgIHNucHJpbnRmKGZpbmFsX2ZpbGVuYW1lLCBzaXplb2YoZmluYWxfZmlsZW5hbWUpLAogICAgICAgICAgICAgICAgICAgICAiL3N0b3JhZ2UvZW11bGF0ZWQvMC9Eb3dubG9hZC9Db2RpbmdDLyVkX+C4iuC4meC4sOC4p+C4seC4meC4l+C4teC5iCAlZC50eHQiLAogICAgICAgICAgICAgICAgICAgICBpbml0aWFsX3BfbW9uZXkgKyBpbml0aWFsX2hfbW9uZXksIGRheSk7CiAgICAgICAgICAgIHJlbmFtZSh0ZW1wX2ZpbGVuYW1lLCBmaW5hbF9maWxlbmFtZSk7CgogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGRheSsrOwogICAgfQoKICAgIHJldHVybiAwOwp9
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int get_unit_digit_sum(int a, int b) {
return (a + b) % 10;
}
int main() {
int initial_p_money, initial_h_money;
int bet_per_round;
int round;
int p_money, h_money;
int p_win_count, h_win_count;
int p_streak, h_streak;
int p_max_streak, h_max_streak;
int day = 1;
int total_round = 0;
int total_p_win_count = 0, total_h_win_count = 0;
int total_p_streak = 0, total_h_streak = 0;
int target_total_money;
srand(time(NULL));
printf("กรอกจำนวนเงินเริ่มต้นของผู้เล่น: ");
scanf("%d", &initial_p_money);
printf("กรอกจำนวนเงินเริ่มต้นของเจ้ามือ: ");
scanf("%d", &initial_h_money);
printf("กรอกจำนวนเงินเดิมพันต่อรอบ: ");
scanf("%d", &bet_per_round);
printf("กรอกจำนวนเงินเป้าหมายรวมของ P (เงินคงเหลือถึงจำนวนนี้จะตัดจบ): ");
scanf("%d", &target_total_money);
char temp_filename[] = "/storage/emulated/0/Download/CodingC/log_tmp.txt";
FILE *fp = fopen(temp_filename, "w");
if (fp == NULL) {
printf("ไม่สามารถสร้างไฟล์บันทึกได้\n");
return 1;
}
while (1) {
p_money = initial_p_money;
h_money = initial_h_money;
p_win_count = h_win_count = 0;
p_streak = h_streak = p_max_streak = h_max_streak = 0;
round = 1;
fprintf(fp, "=== วันที่ %d ===\n", day);
printf("\n=== วันที่ %d ===\n", day);
int prev_p_money = p_money;
int prev_h_money = h_money;
while (p_money >= bet_per_round && h_money >= bet_per_round) {
prev_p_money = p_money;
prev_h_money = h_money;
int p_number = rand() % 37;
int h_number = rand() % 37;
p_money -= bet_per_round;
h_money -= bet_per_round;
int p_point = get_unit_digit_sum(p_number / 10, p_number % 10);
int h_point = get_unit_digit_sum(h_number / 10, h_number % 10);
printf("รอบที่ %d\n", round);
fprintf(fp, "รอบที่ %d\n", round);
printf("P ได้ %d (%d)\n", p_number, p_point);
fprintf(fp, "P ได้ %d (%d)\n", p_number, p_point);
printf("H ได้ %d (%d)", h_number, h_point);
fprintf(fp, "H ได้ %d (%d)", h_number, h_point);
if (p_point == 0 && h_point != 0) {
// P ชนะด้วย 0 (จ่าย 3x)
// P ได้เงินเดิมพันของตัวเอง + เดิมพันของ H + ได้เงินเพิ่มอีก 1 เท่า
p_money += bet_per_round * 3;
// H ถูกหักเพิ่มอีก 1 เท่า (นอกจากที่หักไปตอนแทงแล้ว)
h_money -= bet_per_round;
p_win_count++; p_streak++;
h_streak = 0;
if (p_streak > p_max_streak) p_max_streak = p_streak;
printf(" ===== P ชนะด้วยแต้ม 0! จ่าย 3x \n");
fprintf(fp, " ===== P ชนะด้วยแต้ม 0! จ่าย 3x \n");
} else if (h_point == 0 && p_point != 0) {
// H ชนะด้วย 0
h_money += bet_per_round * 2;
h_win_count++; h_streak++;
p_streak = 0;
if (h_streak > h_max_streak) h_max_streak = h_streak;
printf(" ===== H ชนะด้วยแต้ม 0! ได้เงินเดิมพัน x2\n");
fprintf(fp, " ===== H ชนะด้วยแต้ม 0! ได้เงินเดิมพัน x2\n");
} else if (p_point > h_point) {
// P ชนะปกติ
p_money += bet_per_round * 2;
p_win_count++; p_streak++;
h_streak = 0;
if (p_streak > p_max_streak) p_max_streak = p_streak;
printf(" ===== P ชนะ\n");
fprintf(fp, " ===== P ชนะ\n");
} else {
// H ชนะปกติ
h_money += bet_per_round * 2;
h_win_count++; h_streak++;
p_streak = 0;
if (h_streak > h_max_streak) h_max_streak = h_streak;
printf(" ===== H ชนะ\n");
fprintf(fp, " ===== H ชนะ\n");
}
int p_diff = p_money - prev_p_money;
int h_diff = h_money - prev_h_money;
printf("เงินคงเหลือ: P = %d (%+d) | H = %d (%+d)\n\n", p_money, p_diff, h_money, h_diff);
fprintf(fp, "เงินคงเหลือ: P = %d (%+d) | H = %d (%+d)\n\n", p_money, p_diff, h_money, h_diff);
round++;
total_round++;
if (p_money >= target_total_money) {
break;
}
}
double p_win_rate_day = (double)p_win_count * 100 / (p_win_count + h_win_count);
double h_win_rate_day = (double)h_win_count * 100 / (p_win_count + h_win_count);
total_p_win_count += p_win_count;
total_h_win_count += h_win_count;
if (p_streak > total_p_streak) total_p_streak = p_streak;
if (h_streak > total_h_streak) total_h_streak = h_streak;
fprintf(fp, "--- จบวันที่ %d ---\n", day);
fprintf(fp, "P ชนะวันนี้ %d ครั้ง | ชนะติดกันสูงสุด = %d\n", p_win_count, p_max_streak);
fprintf(fp, "H ชนะวันนี้ %d ครั้ง | ชนะติดกันสูงสุด = %d\n", h_win_count, h_max_streak);
fprintf(fp, "เปอร์เซ็นต์ชนะประจำวันของ P: %.2f%%\n", p_win_rate_day);
fprintf(fp, "เปอร์เซ็นต์ชนะประจำวันของ H: %.2f%%\n\n", h_win_rate_day);
printf("--- จบวันที่ %d ---\n", day);
printf("P ชนะวันนี้ %d ครั้ง | ชนะติดกันสูงสุด = %d\n", p_win_count, p_max_streak);
printf("H ชนะวันนี้ %d ครั้ง | ชนะติดกันสูงสุด = %d\n", h_win_count, h_max_streak);
printf("เปอร์เซ็นต์ชนะประจำวันของ P: %.2f%%\n", p_win_rate_day);
printf("เปอร์เซ็นต์ชนะประจำวันของ H: %.2f%%\n\n", h_win_rate_day);
if (p_money >= target_total_money || (h_money <= 0 && p_money > 0)) {
if (p_money >= target_total_money) {
fprintf(fp, "### ผู้เล่นชนะ! เพราะทำกำไรถึงเป้าหมาย %d บาท ในวันที่ %d ###\n\n", target_total_money, day);
printf("### ผู้เล่นชนะ! เพราะทำกำไรถึงเป้าหมาย %d บาท ในวันที่ %d ###\n\n", target_total_money, day);
} else {
fprintf(fp, "### ผู้เล่นชนะ! เจ้ามือหมดตัวในวันที่ %d ###\n\n", day);
printf("### ผู้เล่นชนะ! เจ้ามือหมดตัวในวันที่ %d ###\n\n", day);
}
double p_win_rate_total = (double)total_p_win_count * 100 / total_round;
double h_win_rate_total = (double)total_h_win_count * 100 / total_round;
fprintf(fp, "=== สรุปรวมตั้งแต่วันแรกจนวันที่ %d ===\n", day);
fprintf(fp, "รอบที่เล่นทั้งหมด: %d\n", total_round);
fprintf(fp, "P ชนะทั้งหมด: %d ครั้ง | ชนะติดกันสูงสุดรวม: %d\n", total_p_win_count, total_p_streak);
fprintf(fp, "H ชนะทั้งหมด: %d ครั้ง | ชนะติดกันสูงสุดรวม: %d\n", total_h_win_count, total_h_streak);
fprintf(fp, "เปอร์เซ็นต์ชนะรวมของ P: %.2f%%\n", p_win_rate_total);
fprintf(fp, "เปอร์เซ็นต์ชนะรวมของ H: %.2f%%\n\n", h_win_rate_total);
printf("=== สรุปรวมตั้งแต่วันแรกจนวันที่ %d ===\n", day);
printf("รอบที่เล่นทั้งหมด: %d\n", total_round);
printf("P ชนะทั้งหมด: %d ครั้ง | ชนะติดกันสูงสุดรวม: %d\n", total_p_win_count, total_p_streak);
printf("H ชนะทั้งหมด: %d ครั้ง | ชนะติดกันสูงสุดรวม: %d\n", total_h_win_count, total_h_streak);
printf("เปอร์เซ็นต์ชนะรวมของ P: %.2f%%\n", p_win_rate_total);
printf("เปอร์เซ็นต์ชนะรวมของ H: %.2f%%\n\n", h_win_rate_total);
fclose(fp);
char final_filename[150];
snprintf(final_filename, sizeof(final_filename),
"/storage/emulated/0/Download/CodingC/%d_ชนะวันที่ %d.txt",
initial_p_money + initial_h_money, day);
rename(temp_filename, final_filename);
break;
}
day++;
}
return 0;
}