Đề thi thử THT bảng B HCM

E

englandhuynh

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Bài 1: Số siêu may mắn
Một số được gọi là may mắn nếu trong biểu diễn trong hệ cơ số 10 chỉ gồm các chữ số 4 và 7. Chẳng hạn, các số 47, 744, 4 là may mắn, các số 5, 17, 467 không là các số may mắn.
Một số được gọi là siêu may mắn nếu là số may mắn và có cùng số chữ số 7 và 4. Chẳng hạn 47, 7744, 474477 là các số siêu may mắn và 4, 744, 467 không là các số siêu may mắn.
Yêu cầu: Cho trước số nguyên dương n, tìm số siêu may mắn nhỏ nhất không nhỏ hơn n.
Dữ liệu: Vào từ tập tin văn bản SMM.INP gồm duy nhất số nguyên dương n (1 ≤ n ≤ 109).
Kết quả: Ghi ra tập tin văn bản SMM.OUT số siêu may mắn nhỏ nhất không nhỏ hơn n.

Ví dụ 1:
SMM.INP SMM.OUT
4500 4747

Ví dụ 2:
SMM.INP SMM.OUT
47 47

Bài 2: Biến đổi
Cho một số nguyên dương x. Nếu x khác 1, Phương thực hiện lặp các phép biến đổi sau: Nếu x lẻ, Phương cộng thêm 1 vào x, ngược lại Phương chia x cho 2.

Yêu cầu: Cho biết sau bao nhiêu phép biến đổi Phương được số 1.

Dữ liệu: Vào từ tập tin văn bản BIENDOI.INP gồm một nguyên dương x duy nhất biểu diễn trong hệ cơ số 2. Biết chữ số đầu tiên bên trái của x khác 0 và x có số chữ số không quá 106.
Kết quả: Ghi ra tập tin văn bản BIENDOI.OUT, một số nguyên dương duy nhất là số phép biến đổi cần có.

Ví dụ 1:
BIENDOI.INP BIENDOI.OUT
1 0

Ví dụ 2:
BIENDOI.INP BIENDOI.OUT
1001001 12

Ví dụ 3:
BIENDOI.INP BIENDOI.OUT
101110 8

Bài 3: Hộp quà
Vân nhận được một món quà chứa trong hộp hình lập phương (hộp bị khóa).
Hộp được khóa như sau: bản thân hộp là một hình lập phương hoàn hảo với lỗ khảm ở mỗi mặt. Gửi kèm với hộp là 6 viên ngọc khớp với lỗ khảm trên mỗi mặt. Hộp chỉ mở ra được nếu được trang trí bằng cách khảm 6 viên ngọc vào đúng vị trí. Hai cách trang trí là như nhau nếu có thể dung phép quay để từ cách này qua cách kia.

Hãy giúp Vân mở món quà đó.
Yêu cầu: Biết màu của mỗi viên ngọc, hỏi trong trường hợp xấu nhất, cần bao nhiêu lần thử để mở được hộp? Chú ý, hai viên ngọc cùng màu giống hệt nhau.

Dữ liệu: Vào từ tập tin văn bản HOPQUA.INP, gồm một dòng duy nhất chưa 6 kí tự cách nhau khoảng trắng lấy từ tập {R, O, Y, G, B, V} – đó là màu của 6 viên ngọc.

Kết quả: Ghi ra tập tin văn bản HOPQUA.OUT một số nguyên duy nhất là số cách trang trí hộp.

Ví dụ 1:
HOPQUA.INP HOPQUA.OUT
YYYYYY 1

Ví dụ 2:
HOPQUA.INP HOPQUA.OUT
BOOOOB 2

Ví dụ 3:
HOPQUA.INP HOPQUA.OUT
ROYGBV 30

Mn vào chém đi !


 
Last edited by a moderator:
T

thienvamai

bài 1 có thể backtrack trong bài hoặc sinh mảng hằng (như dưới) rồi chặt nhị phân tìm giá trị cần in ra
Mã:
47
74
4477
4747
4774
7447
7474
7744
444777
447477
447747
447774
474477
474747
474774
477447
477474
477744
744477
744747
744774
747447
747474
747744
774447
774474
774744
777444
44447777
44474777
44477477
44477747
44477774
44744777
44747477
44747747
44747774
44774477
44774747
44774774
44777447
44777474
44777744
47444777
47447477
47447747
47447774
47474477
47474747
47474774
47477447
47477474
47477744
47744477
47744747
47744774
47747447
47747474
47747744
47774447
47774474
47774744
47777444
74444777
74447477
74447747
74447774
74474477
74474747
74474774
74477447
74477474
74477744
74744477
74744747
74744774
74747447
74747474
74747744
74774447
74774474
74774744
74777444
77444477
77444747
77444774
77447447
77447474
77447744
77474447
77474474
77474744
77477444
77744447
77744474
77744744
77747444
77774444
4444477777
4444747777
4444774777
4444777477
4444777747
4444777774
4447447777
4447474777
4447477477
4447477747
4447477774
4447744777
4447747477
4447747747
4447747774
4447774477
4447774747
4447774774
4447777447
4447777474
4447777744
4474447777
4474474777
4474477477
4474477747
4474477774
4474744777
4474747477
4474747747
4474747774
4474774477
4474774747
4474774774
4474777447
4474777474
4474777744
4477444777
4477447477
4477447747
4477447774
4477474477
4477474747
4477474774
4477477447
4477477474
4477477744
4477744477
4477744747
4477744774
4477747447
4477747474
4477747744
4477774447
4477774474
4477774744
4477777444
4744447777
4744474777
4744477477
4744477747
4744477774
4744744777
4744747477
4744747747
4744747774
4744774477
4744774747
4744774774
4744777447
4744777474
4744777744
4747444777
4747447477
4747447747
4747447774
4747474477
4747474747
4747474774
4747477447
4747477474
4747477744
4747744477
4747744747
4747744774
4747747447
4747747474
4747747744
4747774447
4747774474
4747774744
4747777444
4774444777
4774447477
4774447747
4774447774
4774474477
4774474747
4774474774
4774477447
4774477474
4774477744
4774744477
4774744747
4774744774
4774747447
4774747474
4774747744
4774774447
4774774474
4774774744
4774777444
4777444477
4777444747
4777444774
4777447447
4777447474
4777447744
4777474447
4777474474
4777474744
4777477444
4777744447
4777744474
4777744744
4777747444
4777774444
7444447777
7444474777
7444477477
7444477747
7444477774
7444744777
7444747477
7444747747
7444747774
7444774477
7444774747
7444774774
7444777447
7444777474
7444777744
7447444777
7447447477
7447447747
7447447774
7447474477
7447474747
7447474774
7447477447
7447477474
7447477744
7447744477
7447744747
7447744774
7447747447
7447747474
7447747744
7447774447
7447774474
7447774744
7447777444
7474444777
7474447477
7474447747
7474447774
7474474477
7474474747
7474474774
7474477447
7474477474
7474477744
7474744477
7474744747
7474744774
7474747447
7474747474
7474747744
7474774447
7474774474
7474774744
7474777444
7477444477
7477444747
7477444774
7477447447
7477447474
7477447744
7477474447
7477474474
7477474744
7477477444
7477744447
7477744474
7477744744
7477747444
7477774444
7744444777
7744447477
7744447747
7744447774
7744474477
7744474747
7744474774
7744477447
7744477474
7744477744
7744744477
7744744747
7744744774
7744747447
7744747474
7744747744
7744774447
7744774474
7744774744
7744777444
7747444477
7747444747
7747444774
7747447447
7747447474
7747447744
7747474447
7747474474
7747474744
7747477444
7747744447
7747744474
7747744744
7747747444
7747774444
7774444477
7774444747
7774444774
7774447447
7774447474
7774447744
7774474447
7774474474
7774474744
7774477444
7774744447
7774744474
7774744744
7774747444
7774774444
7777444447
7777444474
7777444744
7777447444
7777474444
7777744444
 
M

mikelhpdatke

Bài 1:
+Nếu số chữ số của n ban đầu lẻ thì kq sẽ có thêm 1 chữ số. TH này dễ
+Nếu số chữ số chẵn, dùng quay lui.
A[1]>7 thì thêm 2 chữ số nữa.
A[1]<=7 và A[1]>4...
A[1]<=4...

Thuật ghép số mình nghĩ :D
 
T

thienvamai

nhận xét bài 2:
mất n+1 bước để biến dãy 011...111 (n số 1) về 1
áp dụng để làm
code c++ tham khảo
PHP:
#include<cstdio>
#include<cstring>
#define elif else if
main(){
    char c[1111111];

    scanf("%s",c);
    int n=strlen(c);
    int j=n-1,i=0,s=0;
    while(j>=0){
        if(c[j]=='1') {
        i++;
        j--;
        }
        elif(c[j]=='0'){
            s=s+i+1;
            if(i){
                i=1;
                }
            j--;
        }
    }
    if(i>1) s=s+i+1;
    printf("%d",s);
}
 
M

mikelhpdatke

nhận xét bài 2:
mất n+1 bước để biến dãy 011...111 (n số 1) về 1
áp dụng để làm
code c++ tham khảo
PHP:
#include<cstdio>
#include<cstring>
#define elif else if
main(){
    char c[1111111];

    scanf("%s",c);
    int n=strlen(c);
    int j=n-1,i=0,s=0;
    while(j>=0){
        if(c[j]=='1') {
        i++;
        j--;
        }
        elif(c[j]=='0'){
            s=s+i+1;
            if(i){
                i=1;
                }
            j--;
        }
    }
    if(i>1) s=s+i+1;
    printf("%d",s);
}


Dùng đệ quy ăn được 10^6 không ăn nhể
Mà tại sao a nghĩ ra cái đó :-?
 
R

rocky576

nhận xét bài 2:
mất n+1 bước để biến dãy 011...111 (n số 1) về 1
áp dụng để làm
code c++ tham khảo
PHP:
#include<cstdio>
#include<cstring>
#define elif else if
main(){
    char c[1111111];

    scanf("%s",c);
    int n=strlen(c);
    int j=n-1,i=0,s=0;
    while(j>=0){
        if(c[j]=='1') {
        i++;
        j--;
        }
        elif(c[j]=='0'){
            s=s+i+1;
            if(i){
                i=1;
                }
            j--;
        }
    }
    if(i>1) s=s+i+1;
    printf("%d",s);
}
t1.c:1:17: fatal error: cstdio: No such file or directory
compilation terminated.
 
T

thienvamai

t1.c:1:17: fatal error: cstdio: No such file or directory
compilation terminated.
lưu với tên .cpp chứ không phải .c nha

Dùng đệ quy ăn được 10^6 không ăn nhể

Đệ quy tuỳ cách gọi mà ảnh hưởng đến thời gian chạy

Mà tại sao a nghĩ ra cái đó :-?
viết thử hết bước biến đổi ra là thấy mà
 
R

rocky576

lưu với tên .cpp chứ không phải .c nha
Xin lỗi bạn, compile với đuôi .cpp thì được nhưng mà không chạy được gì hết
đến nỗi mình phải killall t1 đấy, không có dấu hiệu gì chứng tỏ chương trình đó chạy, thông qua system monitor mình không hề thấy cpu hay ram bị chiếm dụng.
 
T

thienvamai

Xin lỗi bạn, compile với đuôi .cpp thì được nhưng mà không chạy được gì hết
đến nỗi mình phải killall t1 đấy, không có dấu hiệu gì chứng tỏ chương trình đó chạy, thông qua system monitor mình không hề thấy cpu hay ram bị chiếm dụng.
mình không hiểu trình compile của bạn có vấn đề gì
http://ideone.com/4AVURm
chương trình chạy tốt trên máy chủ trực tuyến với trình compile chuẩn không hề bị lỗi
 
R

rocky576

mình không hiểu trình compile của bạn có vấn đề gì
http://ideone.com/4AVURm
chương trình chạy tốt trên máy chủ trực tuyến với trình compile chuẩn không hề bị lỗi
Trình dịch của mình: GCC47 Stable (GNU Linux)
cú pháp dịch:
cd Documents/add/test
g++ t1.cpp -o t1
./t1
không có kết quả gì hết? cuối cùng thì: killall t1
Ctrl-C
exit
exit
Đây là toàn bộ những gì mình đã làm.
 
T

thienvamai

Trình dịch của mình: GCC47 Stable (GNU Linux)
cú pháp dịch:
cd Documents/add/test
g++ t1.cpp -o t1
./t1
không có kết quả gì hết? cuối cùng thì: killall t1
Ctrl-C
exit
exit
Đây là toàn bộ những gì mình đã làm.
mình không để nhập xuất từ file, nếu muốn bạn có thể dùng
./tên file chạy <file vào >file ra
để chạy và nhập xuất trên file
 
R

rocky576

mình không để nhập xuất từ file, nếu muốn bạn có thể dùng
./tên file chạy <file vào >file ra
để chạy và nhập xuất trên file
Mình chịu, vẫn mã nguồn của bạn với MinGW47 cũng không chạy được (Windows), mình đã thử sửa hàm main của bạn thành int main() (các trình dịch hiện đại không cho phép void main) nhưng vẫn không chạy được. Thôi mình trao đổi chuyện này qua tin nhắn khách nhé, pic của bạn chủ pic hỏi về pascal cơ mà :)
 
M

mikelhpdatke


....
Bài 3: Hộp quà
Vân nhận được một món quà chứa trong hộp hình lập phương (hộp bị khóa).
Hộp được khóa như sau: bản thân hộp là một hình lập phương hoàn hảo với lỗ khảm ở mỗi mặt. Gửi kèm với hộp là 6 viên ngọc khớp với lỗ khảm trên mỗi mặt. Hộp chỉ mở ra được nếu được trang trí bằng cách khảm 6 viên ngọc vào đúng vị trí. Hai cách trang trí là như nhau nếu có thể dung phép quay để từ cách này qua cách kia.

Hãy giúp Vân mở món quà đó.
Yêu cầu: Biết màu của mỗi viên ngọc, hỏi trong trường hợp xấu nhất, cần bao nhiêu lần thử để mở được hộp? Chú ý, hai viên ngọc cùng màu giống hệt nhau.

Dữ liệu: Vào từ tập tin văn bản HOPQUA.INP, gồm một dòng duy nhất chưa 6 kí tự cách nhau khoảng trắng lấy từ tập {R, O, Y, G, B, V} – đó là màu của 6 viên ngọc.

Kết quả: Ghi ra tập tin văn bản HOPQUA.OUT một số nguyên duy nhất là số cách trang trí hộp.

Ví dụ 1:
HOPQUA.INP HOPQUA.OUT
YYYYYY 1

Ví dụ 2:
HOPQUA.INP HOPQUA.OUT
BOOOOB 2

Ví dụ 3:
HOPQUA.INP HOPQUA.OUT
ROYGBV 30

Mn vào chém đi !


Đọc xong hiểu được chết liền =)) =)). Chú giải thích coi
 
E

englandhuynh

@Đạt : thế này : Ví dụ có test BOOOOB thì có 2 màu là B và O, trong mỗi lần thử, mỗi lỗ sẽ lần lượt nhận giá trị là B hoặc O, còn test ROYGBV thì có 6 màu, trong mỗi lần thử, mỗi lỗ sẽ lần lượt nhận giá trị R,O,Y,G,B,V. Hỏi trong trường hợp xấu nhất, cần bao nhiêu lần thử để mở được hộp? Chú ý, hai viên ngọc cùng màu giống hệt nhau.
 
R

rocky576

Cho mình xin lỗi bạn thienvanmai vì đã nói mà không kiểm tra trước
quá trình biên dịch của mình ở windows và máy ảo linux đều thành công
chỉ tại mình quên cú pháp thực thi thôi:
./t1 input.dat output.dat
p/s: Đạt đừng xóa mấy comment của mình và thienvanmai, để đó để các bạn khác cùng rút kinh nghiệm là kiểm tra kĩ rồi mới nói.
 
M

mikelhpdatke

@Đạt : thế này : Ví dụ có test BOOOOB thì có 2 màu là B và O, trong mỗi lần thử, mỗi lỗ sẽ lần lượt nhận giá trị là B hoặc O, còn test ROYGBV thì có 6 màu, trong mỗi lần thử, mỗi lỗ sẽ lần lượt nhận giá trị R,O,Y,G,B,V. Hỏi trong trường hợp xấu nhất, cần bao nhiêu lần thử để mở được hộp? Chú ý, hai viên ngọc cùng màu giống hệt nhau.
Còn cái này :-?
"Hai cách trang trí là như nhau nếu có thể dung phép quay để từ cách này qua cách kia."
 
E

englandhuynh

Thì tưởng tượng nó như xúc xắc :mặt 1 đối diện mặt 6, mặt 2 đổi diện mặt 4, mặt 3 đối diện mặt 5
180px-Dice.jpg

Ví dụ trường hợp :
mặt 2 với mặt 4 cùng màu thì 2 trường hợp :
+ mặt 1 màu A, mặt 6 màu B
+ Mặt 1 màu B, mặt 6 màu A
là 1 cách
 
M

mikelhpdatke

Dự là vét cạn
Chia làm 3 cặp
1,6
2,4
3,5.
Quay lui + đánh dấu (sắp xếp theo thứ tự từ điển) ghép thử mỗi đôi vào từng cặp.
Mới nghĩ ra sơ thế, có gì tối nghĩ nốt. Chiều a thi rồi
 
Last edited by a moderator:
E

englandhuynh

Nói chung là phần vét hết trường hợp thì đơn giản rồi, quan trọng là nghĩ ra trường hợp trùng nhau để loại bỏ thôi :
Test BOOOOB -> có 15 trường hợp -> loại 13 trường hợp
Test ROYGBV -> có 208 trường hợp - > loại 178 trường hợp @@
Bài này giới hạn nhỏ, time không thành vấn đề, chỉ còn mấy trường hợp để loại thôi
p/s : @Đạt : Chiều thi tốt nhá
cute_smiley34.gif
 
Top Bottom