Занятие 3. Справочник
Занятие 3. Справочник
Функция быстрого возведения в степень
static double binpow (double a, int n) { if (n == 0) return 1; if (n % 2 == 1) return binpow (a, n-1) * a; else { double b = binpow (a, n/2); return b * b; } }Разложение на слагаемые
import java.io.*; import java.util.Scanner; public class Test { static PrintWriter out = new PrintWriter(System.out); static Scanner in = new Scanner(System.in); static int[] m = new int[41]; //из максимальных ограничений static int S = 0; static int N = 0; public static void main(String[] args) { N = in.nextInt(); m[0] = 1; solve(1); out.flush(); } static void solve(int k) { for (int i = m[k - 1]; S + i <= N; i ++) { m[k] = i; S += m[k]; if (S == N) printSolution(k); //решение найдено, выводим! else solve(k + 1); S -= m[k]; } } static void printSolution(int k) { for (int i = 1; i <= k; i++) { out.print (m[i] + " "); } out.println(); } }