01/10/2018, 08:38

Liệt kê số trong c

cho e hỏi là với 2 phần này thì mình làm như thế nào ạ nghĩ mãi k ra ạ

rogp10 viết 10:43 ngày 01/10/2018

Bài này mình hay gặp (!) là bốn điều kiện đồng thời (mà không ai ghi chữ này vào đề)

Đúng, bài này có 4 điều kiện nhé, thêm “7 chữ số” vào nữa. Có thể chia thành hai dạng điều kiện: điều kiện giới hạn và điều kiện kiểm tra.

  • Thuận nghịch thì giới hạn trong [1000…9999] thôi.
  • 3 chữ số 1 thì có thể giới hạn thêm (!) Do tính đối xứng nên số 1 phải nằm chính giữa. Vậy chỉ cần duyệt trên [100…999]. Trong hàm helper có thể kiêm cả hai công việc. Nếu muốn thì có thể chia thành nhiều dải để duyệt và không dùng helper (trừ soi prime).

Nên ghi lập luận này vào comment code.

Gió viết 10:41 ngày 01/10/2018

số 1 có đúng 3 chữ số nên số phải có dạng abc1cba
Nếu a=1 b,c có thể chọn các số tuỳ ý #1.
Nếu a#1, và a#số chẵn chọn b hoặc c 1 trong 2 số =1 và số còn lại khác 1.
Cả 2 trường hợp đều dùng 2 vòng for ~ 0->9 nên kết quả không quá nhiều
Kiểm tra tính nguyên tố của các số được sinh ra

SilverBullet viết 10:43 ngày 01/10/2018

Với dạng bài này thì bạn làm 3 cái hàm:

  1. Hàm check_ngTo(): Cái này chắc bạn làm được
  2. Hàm check_thuanNghich(): Số thuận nghịch là số mà đọc từ trái sang phải và từ phải sang trái ta đều được các chữ số giống nhau. Ví dụ: 885588 là số thuận nghịch. Chủ yếu là sử dụng phép chia lấy dư và lấy phần nguyên thôi
  3. Hàm check_so1(): Bạn tạo 1 biến count =0 để đếm số chữ số 1. Bạn cũng sử dụng phép chia lấy dư và lấy phần nguyên như mục 2. Mục tiêu của mình là cứ mỗi lần tách được một chữ số ra thì kiểm tra xem nó có bằng 1 không. Nếu bằng 1 thì count++. Sau khi tách hết các số ra rồi mà count == 3 thì ta lấy số đó.
    Cuối cùng là trong main thực hiện vòng lặp for và gọi 3 hàm trên.
Bài liên quan
0