Java.pptx
- Количество слайдов: 21
JAVA НА ОЛИМПИАДАХ
ТРЕБОВАНИЯ К ВЫСЛАННОМУ КОДУ Имя класса должно быть Main. Пакет должен быть по умолчанию. В строке вывода не должно быть лишних пробелов. Последняя строка должна быть с переходом на следующею строку ( println() ). Программа не должна использовать больше памяти чем выделено. Время выполнения программы не должно превышать предоставленного максимума. Программа должна пройти все тесты.
ОРГАНИЗАЦИЯ ПРАВИЛЬНОГО ВЫВОДА МАССИВОВ Случаи: 1. Нам надо вывести весь массив. 2. Мы должны вывести только часть массива.
ОРГАНИЗАЦИЯ ПРАВИЛЬНОГО ВЫВОДА МАССИВОВ Нам надо вывести весь массив. int[] a = new int[100]; out. println(a[0]); for (int i = 1; i < a. length; i++) { out. printf(" %d", a[i]); //out. print(" "+a[i]); } out. println();
ОРГАНИЗАЦИЯ ПРАВИЛЬНОГО ВЫВОДА МАССИВОВ Мы должны вывести только часть массива. int[] a = new int[100]; … boolean flag = true; for (int i = 0; i < a. length; i++) { if(a[i] > 10) // Будет печать if(flag){ // значит еще ниразу не печатали out. print(a[i]); flag = false; } else out. printf(" %d", a[i]); //out. print(“ ”+a[i] } out. println();
ЖЕЛАТЕЛЬНО НЕ ИСПОЛЬЗОВАТЬ КОНКАТЕНАЦИЮ Использование: out. printf("%s %s!n", "Hello", "world"); Вместо: out. println("Hello"+"world"+"!");
ВВОД ДАННЫХ Input. Stream – это абстрактный класс входного потока Его расширяют: Audio. Input. Stream, Byte. Array. Input. Stream, File. Input. Stream, Filter. Input. Stream, Object. Input. Stream, Piped. Input. Stream, Sequence. Input. Stream, String. Buffer. Input. Stream. С потоками работать не удобно поэтому используют «Чтецов» , классы которые расширяют класс Reader.
Input. Stream. Reader – читает по байтно. Buffered. Input. Stream – читает по байтно но буферизует. Есть и другие…
ЕСЛИ ВХОДНЫЕ ДАННЫЕ УДОБНО СЧИТЫВАТЬ ПОСТРОЧНО Buffered. Reader br = new Buffered. Reader(new Input. Stream. Reader(System. in)); String s = br. read. Line(); Не забыть о throws Exception !!!
ЕСЛИ ТРЕБУЕТСЯ РАЗБОР СТРОКИ Scanner in = new Scanner(System. in); Scanner in = new Scanner(new Buffered. Input. Stream(System. in)); В чем их отличие?
ВСПОМОГАТЕЛЬНЫЕ КЛАССЫ java. math. Big. Integer: Big. Integer big = new Big. Integer("387856238648356"); java. math. Big. Decimal: Big. Decimal big. D = new Big. Decimal("4368. 876345");
ВСПОМОГАТЕЛЬНЫЕ КЛАССЫ java. text. Decimal. Format; Decimal. Format df = new Decimal. Format(pattern); out. println(df. format(A)); Pattern = “ 0. 00000”; Pattern = “###, ##0. 0#”; Pattern = "0. ###E 0“; // 1234 == "1. 234 E 3".
ВСПОМОГАТЕЛЬНЫЕ КЛАССЫ: КОЛЛЕКЦИИ JAVA. UTIL. ARRAYLIST; Array. List<E> list = new Array. List<E>(); list. add(b); list. add(index, element); list. remove(b); JAVA. UTIL. TREESET (HASHSET) Tree. Set<E> set = new Tree. Set<E>(); set. add(b); set. remove(b); set. size(); list. size(); Iterator<Е> it = set. iterator(); E k = list. get(index); it. has. Next(); int e = it. next();
ВСПОМОГАТЕЛЬНЫЕ КЛАССЫ String и String. Bilder В чем их различие?
ОБЁРТОЧНЫЕ КЛАССЫ Byte Short Integer Long Double Character Boolean
ОБЁРТОЧНЫЕ КЛАССЫ Long. parse. Long(STRING); Long. parse. Long(STRING, count); int I = Character. get. Numeric. Value(ch);
РЕШЕНО ЭРАТОСФЕНА Найдем все простые числа от 0 до n boolean[] primes = new boolean[n + 1]; Arrays. fill(primes, 2, n + 1, true); for (int i = 2; i * i <= n; i++) if (primes[i]) for (int k = i * i; k <= n; k += i) primes[k] = false;
ПЕРЕВОД В ДВОИЧНУЮ СС long a = Long. parse. Long(br. read. Line()); String. Builder sb = new String. Builder(); while(a != 0){ if(a % 2 == 0) sb. append('0'); else sb. append('1'); a = a >> 1; } String result = sb. reverse(). to. String();
ЗАДАЧА A + B Знаете ли вы известную последовательность Фибоначчи? Она определяется рекуррентно следующим образом: F 0 = 0, F 1 = 1 и Fn = Fn-1 + Fn-2 для n ≥ 2. Числа Фибоначчи обладают многими интересными свойствами. Одним из них является то, что числа Фибоначчи могут быть использованы для представления целых чисел. Каждое натуральное число имеет единственное представление в виде n = Fk 1 + Fk 2 + … + Fkm, ki ≥ ki -1 + 2 для 2 ≤ i ≤ m и k 1 ≥ 2 Например, 6 можно представить в виде F 2+F 5, а 12 может быть представлено в виде F 2+F 4+F 6. Теперь вы знаете, как представлять натуральные числа при помощи чисел Фибоначчи, но сможете ли Вы сложить их? Заданы два натуральных числа, сформированных при помощи чисел Фибоначчи. Ваша задача вычислить их сумму.
ЗАДАЧА A + B Входные данные Первая строка содержит одно целое число T, указывающее на количество тестовых случаев. Каждый тестовый случай состоит из двух строк, каждая строка содержит целое число m, за которым следует m целых чисел k 1, k 2, …, km, указывающих на способ формирования целого числа при помощи чисел Фибоначчи Fk 1+Fk 2+…+Fkm. Корректность входных данных гарантируется. 1 ≤ T ≤ 100, 1 ≤ m ≤ 100, 2 ≤ ki ≤ 1000000. Выходные данные Для каждого тестового случая выведите сначала номер тестового случая, а затем в следующей строке укажите сумму двух заданных чисел, также сформированную, как и во входных данных, при помощи чисел Фибоначчи.
ЗАДАЧА A + B Пример входных данных 2 1 2 2 2 4 3 2 4 6 2 2 5 Пример выходных данных Case 1: 1 5 Case 2: 2 5 7
Java.pptx