Thử thách này là viết một chương trình hoặc tập lệnh đếm tổng của tất cả các chữ số trong các số nguyên từ 1 đến và bao gồm một số đã cho.
Đầu vào, một số nguyên dương. Đầu ra, tổng các chữ số trong số đó và tất cả các số nhỏ hơn.
Ví dụ:
Input: 5
Integer Sequence: 1, 2, 3, 4, 5
Sum of Digits: 1 + 2 + 3 +4 + 5 = 15
Input: 12
Integer Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
Sum of Digits: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 0 + 1 + 1 + 1 + 2 = 51
Để rõ ràng, đây là để tính tổng các chữ số - không phải là số nguyên. Đối với đầu vào một chữ số, điều này sẽ giống nhau. Tuy nhiên, đầu vào lớn hơn 10 sẽ có phản hồi khác nhau. Đây sẽ là một phản hồi không chính xác :
Input: 12
Output: 78
Một ví dụ khác, để cho thấy sự khác biệt:
Input: 10
Integer Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Sum of Integers (INCORRECT RESPONSE): 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
Digit Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0
Sum of Digits (CORRECT RESPONSE): 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 0 = 46
Một trường hợp thử nghiệm lớn hơn (ĐÚNG ĐÚNG):
Input: 1000000
Output: 27000001
Nội quy & Nguyên tắc:
- Mã đã gửi phải là một chương trình hoặc tập lệnh hoàn chỉnh - không chỉ là một chức năng. Nếu mã yêu cầu bao gồm, nhập khẩu, vv, chúng phải được bao gồm trong mã được đăng.
- Số phải được nhập bởi người dùng - không được mã hóa cứng. Đầu vào có thể được nhận dưới dạng đối số dòng lệnh, tệp, stdin hoặc bất kỳ phương tiện nào khác mà ngôn ngữ của bạn có thể lấy đầu vào của người dùng.
- Mã phải có khả năng xử lý đúng các đầu vào ít nhất lên đến
(2^64)-1
. - Mã chỉ nên xuất tổng.
- Các chương trình & tập lệnh được gửi phải thân thiện với người dùng và không lãng phí tài nguyên máy tính (ví dụ: họ không nên khai báo các mảng cực lớn để giữ mọi ký tự). Không có tiền thưởng hoặc hình phạt nghiêm ngặt cho việc này, nhưng xin hãy là những lập trình viên giỏi.
Ghi điểm:
Cơ chế tính điểm chính là theo chiều dài mã. Điểm thấp hơn là tốt hơn. Các khoản thưởng và phạt sau đây cũng được áp dụng:
- -25 Tiền thưởng nếu mã của bạn có thể xử lý tất cả các số dương, ví dụ:
1234567891234567891234564789087414984894900000000
- -50 Tiền thưởng nếu mã của bạn có thể xử lý các biểu thức đơn giản, ví dụ
55*96-12
. Để đủ điều kiện nhận phần thưởng này, mã phải xử lý các toán tử+ - / *
(cộng, trừ, chia, nhân) và thực thi thứ tự các thao tác. Phân chia là phân chia số nguyên thường xuyên.- Ví dụ đã cho (
55*96-12
) ước tính cho5268
. Mã của bạn sẽ trả về giống nhau cho một trong những đầu vào đó - câu trả lời đúng là81393
.
- Ví dụ đã cho (
- -10 Phần thưởng nếu mã của bạn đủ điều kiện nhận phần thưởng -50 và có thể xử lý
^
toán tử (số mũ). - -100 Phần thưởng nếu mã của bạn đủ điều kiện nhận phần thưởng -50 và không sử dụng
eval
hoặc tương tự để xử lý các biểu thức. - +300 Hình phạt nếu mã của bạn phụ thuộc vào bất kỳ tài nguyên web nào.
55*96-12
trở lại?