Задачі на цикли

1. Виведіть на екран 10 разів фразу "Привіт!".
Відповідь:
2. Виведіть на екран n раз фразу "Привіт!". Число n вводить користувач.
Відповідь:
3. Виведіть на екран прямокутник з *. Кількість рядків вводить користувач, кількість стовпців дорівнює 5.
Відповідь:
4. Виведіть на екран числа 1, 2, 3, 4, ..., 15.
Відповідь:
5. Вивести на екран ряд чисел 1001, 1004, 1007, ... 1025.
Відповідь:
6. Вивести на екран числа 100, 96, 92, ... до останнього позитивного включно.
Відповідь:
7. Виведіть на екран числа 1.2, 1.4, 1.6, ..., 2.8.
Відповідь:
8. Виведіть наступні рядки. Перший: 25 25.5 24.8. Другий: 26 26.5 25.8. І так далі. Останній рядок: 35 35.5 34.8.
Відповідь:
9. Для даного n знайти суму 1 + 2 + 3 + ... + n. Наприклад, для n = 10 відповідь дорівнює 55.
Відповідь:
10. Знайти добуток 5⋅6⋅7⋅ ... ⋅13.
Відповідь:
11. Знайти суму 1 + 4 + 7 + 11 + ... + 112.
Відповідь:
12. Вивести на екран числа від 1000 до 9999 такі, що всі цифри різні.
Відповідь:
13. Вивести на екран числа від 1000 до 9999 такі, що серед цифр немає цифр 4 і цифри 7.
Відповідь:
14. Вивесті все п'ятизначні числа, які діляться на 2, у яких середня цифра 7, і сума всіх цифр ділиться на 5.
Відповідь:
15. Вивести на екран числа від 100 до 999 такі, що серед чисел є цифра 6.
Відповідь:
16. Знайдіть тризначні числа, що дорівнюють сумі кубів своїх цифр.
Відповідь:
17. Скільки існує чотиризначних чисел, які в 550 разів більше суми своїх цифр?
Відповідь:
18. Знайдіть хоча одне натуральне число, яке ділиться на 11, а при діленні на 2, 3, 4, ..., 10 дає в остачі 1.
Відповідь:
19. Вивести на екран n одиниць, потім 2n двійок, потім 3n трійок. Число n вводить користувач.
Відповідь:
20. Вивести ряд чисел: десять десяток, дев'ять дев'яток, вісім вісімок, ..., одну одиницю. Знайти суму всіх цих чисел.
Відповідь:
21. Виведіть на екран такі рядки:
*******
****
*******
****
*******
****
(Всього n рядків, зірочок або 7, або 4 по черзі).
Відповідь:
22. Вивести на екран:
AAABBBAAABBBAAABBB
BBBAAABBBAAABBBAAA
AAABBBAAABBBAAABBB
(Таких рядків n, в кожному рядку m трійок AAA)
Відповідь:
23. Вивести на екран:
AAAAAAAAAAAAAAАA
ABBBBBBBBBBBBBBA
ABBBBBBBBBBBBBBA
ABBBBBBBBBBBBBBA
AAAAAAAAAAAAAAАA
(Кількість рядків вводить користувач, ширина прямокутника в два рази більше висоти)
Відповідь:
import java.util.Scanner;

public class TaskCyckle23 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Кількість рядків n=");
        int n = sc.nextInt();
        // при n=1 і n=2 розглядаємо прості випадки
        if (n == 1) {
            System.out.println("AA");
        } else if (n == 2) {
            System.out.println("AAAA");
            System.out.println("AAAA");
        } else {
            // виводемо перший рядок з А
            for (int i = 1; i <= 2 * n; i++) {
                System.out.print("A");
            }
            System.out.println();
            //виводемо другий і до  n - 1 рядки
            for (int i = 2; i <= n - 1; i++) {
                System.out.print("A");
                for (int j = 2; j <= 2 * n - 1; j++) {
                    System.out.print("B");
                }
                System.out.println("A");
            }
            //Виводемо останній рядок з А
            for (int i = 1; i <= 2 * n; i++) {
                System.out.print("A");
            }
            System.out.println();
        }
    }
}
24. Виведіть на екран квадрат з нулів і одиниць, причому нулі знаходяться тільки на діагоналі квадрата. Всього в квадраті сто цифр.
Відповідь:
25. Вивести на екран 15 рядків. У рядках з парними номерами вивести по 8 чисел, рівних номеру рядка. У рядках з непарними номерами вивести десять одиниць.
Відповідь:
26. Вивести 30 рядків. Непарні рядки містять натуральні числа від 1 до номера поточного рядка включно з кроком 1, парні рядки складаються з п'яти одиниць.
Відповідь:
27. Виведіть на екран таблицю множення для чисел від 1 до 10.
Відповідь:
28. Знайдіть кількість цілих чисел від a до b включно, які діляться на 12.
Відповідь:
29. Користувач вводить ненульові числа до тих пір поки не введе нуль. Знайдіть суму цих чисел.
Відповідь:
30. Користувач вводить ненульові цілі числа до тих пір, поки не введе нуль. Знайдіть кількість парних чисел, які він ввів.
Відповідь:
31. Знайдіть чотиризначні числа, сума цифр яких дорівнює 16.
Відповідь:
32. Знайдіть найбільшу цифру в даному натуральному числі.
Відповідь:
33. Дано натуральне число. Знайдіть кількість парних чисел.
Відповідь:
34. В даному натуральному числі знайдіть кількість чисел, які більше 3, але менше 8.
Відповідь:
35. Для даного натурального числа знайдіть число, цифри якого записані в зворотному порядку.
Відповідь:
36. Знайдіть n-е число Фібоначчі.
Відповідь:
import java.util.Scanner;

public class TaskCycle36 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Введіть номер чила Фібоначчі ");
        int n = sc.nextInt();
        int fn1 = 0;
        int fn2 = 1;
        int fn3;
        int count = 2;
        if (n == 1) {
            System.out.println("0");
        } else if (n == 2) {
            System.out.println("1");
        } else {
            do {
                fn3 = fn2 + fn1;
                fn1 = fn2;
                fn2 = fn3;
                count++;
            } while (count < n);
            System.out.println("Шукане число " + fn3);
        }
    }
}
37. Вичислите значення функції f (x) = x-sinx на відрізці [a; b] з кроком h. Результат представитиу вигляді таблиці.
Відповідь:
import static java.lang.Math.sin;
import java.util.Scanner;

public class TaskCycle37 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Вкажіть границі проміжка [a;b] та крок h");
        System.out.print("a=");
        double a = sc.nextDouble();
        System.out.print("b=");
        double b = sc.nextDouble();
        System.out.print("h=");
        double h = sc.nextDouble();
        double y;
        double x=a;
        while (x<=b) {
            y=x-sin(x);
            System.out.printf("x=%.1f;   y=%.3f%n",x,y);
            x+=h;
        }
    }
}
38. Знайди всі дільники даного натурального числа.
Відповідь:
import static java.lang.Math.pow;
import java.util.Scanner;

public class TaskCycle38 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Вкажіть натуральне число ");
        System.out.print("x=");
        int x = sc.nextInt();
        double y = pow(x, 0.5);
        int c;
        int d;
        int n = 1;
        while (n <= y) {
            c = x % n;
            d = x / n;
            if (c == 0) {
                System.out.println(n);
                if (n != d) {
                    System.out.println(d);
                }
            }
            n++;
        }
    }
}
39. З'ясуйте, чи є дане число простым.
Відповідь:
import static java.lang.Math.pow;
import java.util.Scanner;

public class TaskCycle39 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Вкажіть натуральне число ");
        System.out.print("x=");
        int x = sc.nextInt();
        if (x == 1) {
            System.out.println("Одиниця не є ні простим, ні складеним числом");
            System.exit(0);
        }
        double y = pow(x, 0.5);
        int c;
        int n = 2;
        while (n <= y) {
            c = x % n;
            if (c == 0) {
                System.out.println("Складене");
                System.exit(0);
            }
            n++;
        }
        System.out.println("Просте");
    }
}

40. Натуральне число називається досконалим, якщо воно дорівнює сумі всіх своїх дільників, які не рівних самому числу. Знайдіть всі досконалі числа, менші даного натурального числа n.
Відповідь:
import static java.lang.Math.pow;
import java.util.Scanner;

public class TaskCycle40 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Важіть натуральне чило");
        System.out.print("n=");
        double n = sc.nextDouble();
        for (int i = 1; i <= n; i++) {
            if (sumDiv(i) == i) {
                System.out.println(i);
            }
        }
    }

    static int sumDiv(int x) {
        int sum = 0;
        int c;
        int d;
        double y = pow(x, 0.5);
        int n = 1;
        while (n <= y) {
            c = x % n;
            d = x / n;
            if (c == 0) {
                sum += n;
                if (d != n) {
                    sum += d;
                }
            }
            n++;
        }
        return sum - x;
    }
}
41. Назвемо автобусний квиток нещасливим, якщо сума цифр його шестизначного номера ділиться на 13. Чи можуть два квитка, які йдуть підряд виявитися нещасливими?
Відповідь:
public class TaskCycle41 {

    public static void main(String[] args) {
        boolean flag = false;
        for (int i = 100000; i < 999999; i++) {
            if ((sumNumbers(i) == 13) && (sumNumbers(i + 1) == 13)) {
                System.out.println(i + ";  " + (i + 1));
                flag = true;
            }
        }
        if (!flag) {
            System.out.println("Такі білети відсутні");
        }
    }

    static int sumNumbers(int x) {
        int sum = 0;
        for (int i = 0; i < 6; i++) {
            sum += x % 10;
            x /= 10;
        }
        return sum;
    }
}

42. Знайдіть n пар простих чисел, які відрізняються одие від одного на 2.
Відповідь:
import static java.lang.Math.pow;
import java.util.Scanner;

public class TaskCycle42 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Яку кількість пар ві бажаєте знайти");
        System.out.print("n=");
        int n = sc.nextInt();
        int count = 0;
        int i = 3;
        while (count < n) {
            if (isPrimeNumber(i) && isPrimeNumber(i + 2)) {
                System.out.println(i + ";   " + (i + 2));
                i += 4;
                count++;
                continue;
            }
            i += 2;
        }
    }

    static boolean isPrimeNumber(int x) {
        double y = pow(x, 0.5);
        int c;
        int n = 2;
        while (n <= y) {
            c = x % n;
            if (c == 0) {
                return false;
            }
            n++;
        }
        return true;
    }
}

43. Знайдіть всі натуральні числа, що не перевищують 10000, сума цифр кожного з яких в деякій степіні дорівнює самому числу.
Відповідь:
import static java.lang.Math.pow;

public class TaskCycle43 {

    public static void main(String[] args) {
        double sumNumbPow;
        int sumNumb;
        for (int i = 1; i < 10; i++) {
            System.out.println("Чиосло " + i + "; Степінь " + 1);
        }
        for (int i = 11; i <= 10000; i++) {
            sumNumb = sumNumb(i);
            int n = 1;
            do {
                sumNumbPow = pow(sumNumb, n);
                if (sumNumbPow == 1) {
                    break;
                }
                if (i == sumNumbPow) {
                    System.out.println("Чиосло " + i + "; Степінь " + n);
                    break;
                }
                n++;
            } while (sumNumbPow < i);

        }
    }

    static int sumNumb(int x) {
        int sum = 0;
        while (x > 0) {
            sum += x % 10;
            x /= 10;
        }
        return sum;
    }
}


44. Дано число k. Визначте, чи існує таке число n, що 1 + 2 + 3 + ... + n = k.
Відповідь:
import java.util.Scanner;

public class TaskCycle44 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Введіть число k");
        System.out.print("k=");
        int k = sc.nextInt();
        int n = 1;
        int sum;
        do {
            sum = n * (n + 1) / 2;
            if (sum == k) {
                System.out.println("При N=" + n + " сумма =" + k);
                System.exit(0);
            }
            n++;
        } while (sum < k);
        System.out.println("Не існує такого N, при якому сумма =" + k);
    }
}

45. Знайдіть, скільки точок з цілочисельними координатами потрапляє в коло радіуса r з центром в точці (x, y).
Відповідь:
import static java.lang.Math.pow;
import java.util.Scanner;

public class TaskCycle45 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Введіть цілі координати кола (х0;у0) та радіус r");
        System.out.print("x0=");
        int x0 = sc.nextInt();
        System.out.print("y0=");
        int y0 = sc.nextInt();
        System.out.print("r=");
        int r = sc.nextInt();
        int count = 0;
        for (int i = x0 - r; i <= x0 + r; i++) {
            for (int j = y0 + r; j >= y0 - r; j--) {
                if ((pow(i - x0, 2) + pow(j - y0, 2)) <= r * r) {
                    System.out.println("(" + i + ";" + j + ")");
                    count++;
                }
            }
        }
        System.out.println("Кількість точок " + count);
    }
}


46. Виведіть випадкову серію чисел з 0 і 1 таку, що сума чисел у ній більше або дорівнює 10.
Відповідь:
import java.util.Random;

public class TaskCycle46 {

    public static void main(String[] args) {
        int sum = 0;
        int x;
        Random r = new Random(System.currentTimeMillis());
        for (int i = 0; i < 20; i++) {
            x = r.nextInt(2);
            System.out.print(x);
            sum += x;
            if ((sum < 10) && (20 - i == 10 - sum)) {
                f(10 - sum);
                System.exit(0);
            }
        }
    }

    static void f(int n) {
        for (int i = 0; i < n; i++) {
            System.out.print("1");
        }
    }
}


47. Реалізуйте серію з n ігор "Камінь, ножиці, папір" з комп'ютером. В результаті виведіть статистику: скільки ігор виграв користувач, скільки разів кожного виду ходів було вибрано. Доповніть гру аналізом комп'ютера ваших ходів і вибір найбільш підходящого проти вас ходу.
Відповідь:
import java.util.Random;
import java.util.Scanner;

public class TaskCycle47 {
    int stepPlayer = 0;
    int stepComp = 0;
    int rockPlayer = 0;
    int scissorsPlayer = 0;
    int paperPlayer = 0;
    int rockComp = 0;
    int scissorsComp = 0;
    int paperComp = 0;
    int playerWin = 0;
    int compWin = 0;
    int countGame = 0;
    int draw = 0;
    Scanner in = new Scanner(System.in);
    Random r = new Random();

    public static void main(String[] args) {
        TaskCycle47 tc = new TaskCycle47();
        System.out.print("Скільки разів бажаєте зіграти? -->");
        tc.countGame = tc.in.nextInt();
        for (int i = 0; i < tc.countGame; i++) {
            tc.playerStep();
            tc.computerStep();
            tc.win();
        }
        tc.display();
    }

    public int playerStep() {

        do {
            System.out.print("Камінь - 1; Ножиці - 2; Бумага - 3 -->");
            stepPlayer = in.nextInt();
        } while (stepPlayer < 1 || stepPlayer > 3);
        if (stepPlayer < 1 || stepPlayer > 3) {
            playerStep();
        }
        if (stepPlayer == 1) {
            rockPlayer++;
        } else if (stepPlayer == 2) {
            scissorsPlayer++;
        } else {
            paperPlayer++;
        }
        return stepPlayer;
    }

    public int computerStep() {
        stepComp = mind();//r.nextInt(3) + 1;
        if (stepComp == 1) {
            System.out.println("Комп'ютер обрав: Камінь");
            rockComp++;
        } else if (stepComp == 2) {
            System.out.println("Комп'ютер обрав: Ножиці");
            scissorsComp++;
        } else {
            System.out.println("Комп'ютер обрав: Бумагу");
            paperComp++;
        }
        return stepComp;
    }

    public void win() {
        if (stepComp == stepPlayer) {
            System.out.println("Нічія");
            draw++;
        } else if ((stepComp == 1) & (stepPlayer == 2) || (stepComp == 2) & (stepPlayer == 3) 
|| (stepComp == 3) & (stepPlayer == 1)) {
            System.out.println("Виграв комп'ютер");
            compWin++;
        } else {
            System.out.println("Виграла людина");
            playerWin++;
        }
    }

    public void display() {
        System.out.println("Людина виграла " + playerWin + " ігор");
        System.out.println("Комп'ютер виграв" + compWin + " ігор");
        System.out.println("Нічиїх " + draw);
        System.out.println("Людина обрала камінь: " + rockPlayer + " раз(ів). 
Комп'ютер " + rockComp + " раз(ів).");
        System.out.println("Людина обрала ножиці: " + scissorsPlayer + " раз(ів). 
Комп'ютер " + scissorsComp + " раз(ів).");
        System.out.println("Людина обрала бумагу: " + paperPlayer + " раза(ів).
Комп'ютер " + paperComp + " раз(а).");
    }

    public int mind() {
        int max = -10;
        int flag=1;
        if (rockPlayer > max) {
            max = rockPlayer;
            flag=1;
        }
        if (scissorsPlayer > max) {
            max = scissorsPlayer;
            flag=2;
        }
        if (paperPlayer > max) {
            max = paperPlayer;
            flag=3;
        }
        if (flag==1){
            return 3;
        }else if(flag==2){
            return 1;
        }else {
            return 2;
        }

    }
}
48. Дано n цеглин. Ви і комп'ютер ходите по черзі. За хід можна взяти 1, 2 або 3 цеглии. Програв той, кому нема чого брати. Реалізуйте гру з комп'ютером. Комп'ютер ходить випадково (без аналізу виграшної стратегії), однак якщо у нього є хід, який є останнім для його виграшу, то він його здійснює.
Відповідь:
import java.util.Random;
import java.util.Scanner;

public class TaskCycle48 {
    int n;
    int playerChoice;
    int compChoice;
    Scanner in;
    Random r = new Random();

    public TaskCycle48() {
        System.out.print("Скільки цеглин у грі? -> ");
        in = new Scanner(System.in);
        n = in.nextInt();
    }

    public static void main(String[] args) {
        TaskCycle48 tc = new TaskCycle48();
        while (tc.n > 0) {
            tc.player();
            tc.comp();
        }
    }

    public void player() {
        do {
            System.out.println("Залишилось " + n + " штук. Cкільки берете? (1, 2, 3 штуки)");
            playerChoice = in.nextInt();
        } while (playerChoice < 1 | playerChoice > 3);
        n -= playerChoice;
        if (n <= 0) {
            System.out.println("Виграла людина");
            System.exit(0);
        }
    }

    public void comp() {
        if (n <= 3) {
            System.out.println("Комп'ютер бере " + n + ".");
            System.out.print("Комп'ютер виграв");
            System.exit(0);
        } else {
            compChoice = r.nextInt(3) + 1;
            System.out.println("Комп'ютер бере " + compChoice + ".");
            n -= compChoice;
        }
    }
}

49. Знайдіть кількість прямокутних трикутників з цілочисельними сторонами, меншими 100.
Відповідь:
import java.util.Arrays;

public class TaskFor49 {
    public static void main(String[] args) {
        int[] masSqare;
        int size = 100;
        int found;
        int temp;
        int count = 0;
        masSqare = new int[size];
        for (int i = 0; i < masSqare.length; i++) {
            masSqare[i] = (i + 1) * (i + 1);
        }
        for (int i = 0; i < masSqare.length; i++) {
            for (int j = i; j < masSqare.length; j++) {
                temp = masSqare[i] + masSqare[j];
                if (temp > masSqare[masSqare.length - 1]) {
                    break;
                } else {
                    found = Arrays.binarySearch(masSqare, temp);
                    if (found >= 0) {
                        System.out.println("a=" + (i + 1) + "; b=" + (j + 1) + "; c=" + (found + 1));
                        count++;
                    }
                }
            }
        }
        System.out.println("Кількість = " + count + ".");
    }
}

Комментариев нет:

Отправить комментарий