Bạn tôi và tôi đang làm việc trong một phòng thí nghiệm trong lớp Khoa học Máy tính AP của chúng tôi và quyết định viết mã một trong những vấn đề vì chúng tôi vẫn còn một nửa lớp miễn phí sau khi chúng tôi hoàn thành. Đây là câu hỏi:
Cho một số n, n có chia hết cho mỗi chữ số của nó không?
Ví dụ: 128 sẽ vượt qua bài kiểm tra này - nó chia hết cho 1,2 và 8. Bất kỳ số nào có số 0 sẽ tự động loại bỏ số đó. Mặc dù bạn có thể sử dụng các ngôn ngữ khác và đăng các giải pháp với chúng nếu bạn thích, chúng tôi quan tâm nhất là xem mọi người có thể tạo chương trình bằng Java như thế nào, vì đó là ngôn ngữ chúng tôi sử dụng trong lớp. Cho đến nay, cả hai chúng tôi đều có 51. Đây là mã hiện tại của tôi:
public boolean dividesSelf(int n){for(int p=n;n%10>0;)n/=p%(n%10)>0?.1:10;return n<1;}
// 51 characters
// Breakdown:
// for(int p=n; Saves one semicolon to put declaration into for loop
// n%10>0;) Basic check-for-zero
// n/= Pretty simple, discarding one number off of n at a time
// p%(n%10)>0? If p (the given value) is not divisible by n%10 (the current digit)...
// .1:10; Divide by .1 (multiply by 10) so it fails the check next iteration. If it is divisible, divide by 10 to truncate the last digit
// return n<1 If the number was fully divisible, every digit would be truncated, and n would be 0. Else, there would still be non-zero digits.
Yêu cầu
Chữ ký phương thức có thể là bất cứ điều gì bạn muốn. Chỉ cần đếm cơ thể chức năng. Mặc dù vậy, hãy chắc chắn rằng phương thức trả về giá trị boolean và chỉ truyền vào một tham số số (không phải là một chuỗi).
Mã phải có khả năng vượt qua tất cả các trường hợp này (để giữ đúng hướng của câu hỏi ban đầu, chỉ có giá trị boolean đúng và sai nếu ngôn ngữ hỗ trợ booleans. Nếu và chỉ khi ngôn ngữ của bạn không có biến boolean bạn có thể biểu thị sai với 0 và đúng với bất kỳ số nguyên khác nào (tốt nhất là 1 hoặc -1):
128 -> true
12 -> true
120 -> false
122 -> true
13 -> false
32 -> false
22 -> true
42 -> false
212 -> true
213 -> false
162 -> true
204 -> false
Ngoài ra, chúng tôi đã không tính khoảng trắng, vì vậy hãy thoải mái làm điều tương tự, trừ khi khoảng trắng là điều cần thiết cho hoạt động của chương trình (vì vậy các dòng mới trong Java không được tính, nhưng một khoảng trống giữa int
và x=1
không được tính.) Chúc may mắn !
0
chữ số là bội số của mỗi số đó), tôi tưởng tượng hầu hết các câu trả lời sẽ dài hơn theo cách không thú vị để bao gồm kiểm tra cho nó. Vì vậy, tôi thích vấn đề được đặt ra bởi tiêu đề tốt hơn (chia hết cho các chữ số của nó, thay vì là bội số của các chữ số, loại trừ 0).
true
vàfalse
hoặc là truthy / falsy giá trị OK không? 3.java
Thẻ không thực sự áp dụng ở đây, vì bản thân thách thức không liên quan đến Java.