проблема
Фибоначчи рекуррентные формулы для числа столбцов: Fn = Fn-1 + Рп-2, где F1 = F2 = 1.
При п относительно велико, Fn очень велика, и теперь мы хотим знать, Fn делится на число 10007 является.
Описание: В этой задаче, ответ требует Fn делится на 10007, так что мы можем понять это до тех пор, как остальная часть может быть, без необходимости, чтобы вычислить точное значение Fn, то результат вычисляется путем деления числа 10007 взять на себя непосредственное вычисление остальные чаще, чем сначала вычислить исходное число, а затем взять остаток просто.
решить
Теорема об остатках присутствует расчет: п% р = (а + б)% р = (а% р + б% р)% р, сопоставимый коэффициент распределения, Я принимаю подсчет р, это число можно рассматривать как + б, то остаток равен остатком взятия остатка плюс п р б берется, а затем оставшуюся часть р фиксации. Нам нужно только использовать массив, чтобы сохранить остальную часть каждого Fn% 10007, малых до больших значений п р% рецидива массива является первым п-1 Сян.
пакет RuMenXunLian; импорт java.util.Scanner; общественный класс Фибоначчи { общественности статический недействительный основной (String арг []) { INT п; Окончательный INT Num = 10007 ; Сканер = новый сканер (System.in); п = scanner.nextInt (); если (п == 1 || п == 2 ) { System.out.println ( 1 ); } Еще { INT [] A = новый Int [N]; а [ 0] = 1 ; а [ 1] = 1 ; для ( Int I = 2; я <п; я ++ ) { а [I] = (а [I-1] + а [I-2])% Num; } System.out.println (а [п -1 ]); } } }