Để kiểm tra xem một số thập phân có chia hết cho 7 hay không:
Xóa chữ số cuối cùng. Nhân nó với 2 và trừ đi những gì còn lại. Nếu kết quả chia hết cho 7, số ban đầu chia hết cho 7.
(cũng được mô tả ví dụ ở đây )
Quy tắc này là tốt để kiểm tra phân chia thủ công. Ví dụ:
Năm 2016 có chia hết cho 7 không?
Trừ
6*2
từ năm 201; chúng ta nhận được 189. Đây có phải là chia hết cho 7 không? Để kiểm tra nó, hãy áp dụng quy tắc một lần nữa.Trừ
9*2
từ 18; ta được 0. Do đó, năm 2016 chia hết cho 7.
Trong thử thách này, bạn nên áp dụng quy tắc này cho đến khi trạng thái chia hết là rõ ràng , nghĩa là con số không lớn hơn 70 (tuy nhiên, xem bên dưới để biết chi tiết). Tạo một chức năng hoặc một chương trình đầy đủ.
Đầu vào : một số nguyên dương; mã của bạn phải hỗ trợ đầu vào lên tới 32767 (hỗ trợ các số nguyên chính xác tùy ý là phần thưởng; xem bên dưới).
Đầu ra : một số nguyên (có thể âm), không lớn hơn 70, đó là kết quả của việc áp dụng quy tắc chia hết cho 7 hoặc nhiều lần.
Các trường hợp thử nghiệm:
Input Output Alternative output
1 1
10 10 1
100 10 1
13 13 -5
42 42 0
2016 0
9 9
99 -9
9999 -3
12345 3
32767 28 -14
---------- Values below are only relevant for the bonus
700168844221 70 7
36893488147419103232 32 -1
231584178474632390847141970017375815706539969331281128078915168015826259279872 8
Trong đó hai kết quả đầu ra có thể được chỉ định, một trong hai kết quả là chính xác: kết quả thứ hai tương ứng với việc áp dụng quy tắc một lần nữa. Nghiêm cấm áp dụng quy tắc trên một số có một chữ số: nếu bạn xóa chữ số đó, không có gì (không phải 0).
Tiền thưởng : Nếu thuật toán của bạn
- Hỗ trợ số nguyên chính xác tùy ý
- Chỉ thực hiện một lần vượt qua trên đầu vào
- Có độ phức tạp không gian
o(n)
(tức là ít hơnO(n)
); và - Có thời gian phức tạp
O(n)
,
nơi n
là số chữ số thập phân:
Trừ 50% từ số byte của mã của bạn.
Tiền thưởng thực sự :
Ngoài ra, nếu thuật toán của bạn đọc đầu vào theo hướng bình thường, bắt đầu từ chữ số có ý nghĩa nhất, hãy trừ 50% một lần nữa - điểm của bạn là 25% số byte của bạn (có vẻ như có thể, nhưng tôi không chắc lắm).
1000000000000000000001
.
long long
s hoặc một số loại tương đương được xây dựng thì sao?