Так що це дуже поширене для циклів ECT, але коли у нас є трійковий приклад, наприклад
int answer = (a < b) ? b : a;
Як ми можемо поставити чергову трійку після? як розширений трійковий
питання:
Враховуючи два значення int, повертаємо будь-яке значеннябільший Однак, якщо ці два значення мають однакові залишки, якщо їх розділити на 5, то повертаємо меншу величину. Однак у всіх випадках, якщо два значення однакові, поверніться 0. Примітка: оператор% "mod" обчислює залишок, наприклад 7% 5 - 2.
maxMod5(2, 3) → 3
maxMod5(6, 2) → 6
maxMod5(3, 2) → 3
моя ідея:
public int maxMod5(int a, int b) {
int answer = ((a < b) ? (a % 5 == b % 5) ? a : b) : a;
}
Якщо a <b, перевірте, чи модуль 5 рівний ect
Відповіді:
2 для відповіді № 1У вас є 4 можливих результатів:
- a <b і обидва мають однаковий залишок -> повернути a
- a <b, і вони не мають того ж залишку -> повернення b
- a> b, і обидва мають однаковий залишок -> повернення b
- a> b, і вони не мають того ж залишку -> повертають a
Це не означає, до кого ти повернеш, коли a == b
.
int answer = (a < b) ? ((a % 5 == b % 5) ? a : b) : ((a % 5 == b % 5) ? b : a);
Редагувати:
Я пропустив вимогу повернути 0, коли два числа однакові. Для цього потрібне невелике додавання:
int answer = a==b ? 0 : (a < b) ? ((a % 5 == b % 5) ? a : b) : ((a % 5 == b % 5) ? b : a);
0 для відповіді № 2
int ans = (a == b) ? 0 : ((a % 5 == b % 5) ? ((a<b)?a:b) : ((a>b)?a:b));