Мой друг и я работали в лаборатории в нашем классе AP Computer Science и решили написать одну из проблем, так как у нас все еще оставалась свободная половина класса, когда мы закончили. Вот вопрос:
Учитывая число n, делится ли n на каждую из его цифр?
Например, 128 пройдет этот тест - он делится на 1,2 и 8. Любые числа с нулем автоматически дисквалифицируют число. Хотя вы можете использовать другие языки и публиковать решения с ними, если хотите, нам больше всего интересно узнать, насколько компактные люди могут создавать программы на Java, поскольку это язык, который мы используем в классе. Пока у нас обоих 51. Вот мой текущий код:
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.
Требования
Подпись метода может быть любой, какой вы захотите. Просто посчитайте тело функции. Убедитесь, что метод возвращает логическое значение и передает только один числовой параметр (не строку).
Код должен быть в состоянии пройти все эти случаи (чтобы оставаться верным направлениям исходного вопроса, учитываются только логические значения true и false, если язык поддерживает логические значения. Если и только если ваш язык не имеет логических переменных, вы может представлять false с 0 и true с любым ненулевым целым числом (предпочтительно 1 или -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
Кроме того, мы не учитывали пробелы, поэтому не стесняйтесь делать то же самое, если только пробелы не важны для работы программы (так что переводы строки в Java не учитываются, а только один пробел между int
и x=1
считается). Удачи !
0
цифрами, кратным каждому из них), я думаю, что большинство ответов просто длиннее, неинтересным способом, чтобы включить проверку для него. Так что мне больше нравится проблема, представленная заголовком (делится на цифры, а не на кратность, исключая 0).
true
и /false
или все в порядке? 3. Тэг на самом деле здесь не применяется, так как сам вызов не связан с Java.java