суббота, 1 октября 2011 г.

Задачи на случайные числа – сложные!


Эти задачи придуманы нами в процессе преподавания – и скажу сразу, это задачи очень непростые, потому что они и придумывались для тех, кто простые и средней сложности задачи решает уверенно.

Общее примечание: можно генерировать числа не напрямую, а с помощью дополнительных действий.





Задание №1
Напиши класс, который генерирует и выводит на экран серию из 15 случайных двузначных положительных чисел, в каждом из которых вторая цифра (число единиц) совпадает с первой цифрой (число десятков).

Задание №2
Напиши класс, который генерирует и выводит на экран серию из 15 случайных двузначных положительных чисел, в каждом из которых сумма цифр делится на 9 (без остатка).

Задание №3
Напиши класс, который генерирует и выводит на экран серию из 15 случайных двузначных положительных чисел, в каждом из которых первая цифра (число десятков) совпадает со второй цифрой (число единиц) предыдущего элемента.

Задание №4
Напиши класс, который генерирует и выводит на экран серию из 15 случайных чисел.
При этом серия должна быть возрастающий – то есть каждый элемент должен быть больше предыдущих (но серия должна оставаться серий случайных чисел).

Задание №5
Напиши класс, который генерирует и выводит на экран серию из 15 случайных двузначных чисел, ни в одно из которых не встречается цифра 7.

13 комментариев:

  1. import java.util.*;
    class z10_1
    {
    static Scanner reader=new Scanner(System.in);
    public static void main(String[] args)
    {
    int i,x;
    i=0;
    while (i!=15)
    {
    x=(int)(Math.random()*90)+10;
    if (x/10==x%10)
    {
    i++;
    System.out.print(x+" ");
    }
    }
    }
    }

    import java.util.*;
    class z10_2
    {
    static Scanner reader=new Scanner(System.in);
    public static void main(String[] args)
    {
    int i,x;
    i=0;
    while (i!=15)
    {
    x=(int)(Math.random()*90)+10;
    if (x%9==0)
    {
    i++;
    System.out.print(x+" ");
    }
    }
    }
    }

    import java.util.*;
    class z10_3
    {
    static Scanner reader=new Scanner(System.in);
    public static void main(String[] args)
    {
    int i,s,x,d;
    i=1;
    s=0;
    d=0;
    while (s==0)
    {
    x=(int)(Math.random()*90)+10;
    if (x%10!=0)
    {
    d=x%10;
    s++;
    System.out.print(x+" ");
    }
    }
    while (i!=15)
    {
    x=(int)(Math.random()*90)+10;
    if ((x/10==d)&&(x%10!=0))
    {
    i++;
    d=x%10;
    System.out.print(x+" ");
    }
    }
    }
    }

    import java.util.*;
    class z10_4
    {
    static Scanner reader=new Scanner(System.in);
    public static void main(String[] args)
    {
    int i,x,d;
    d=0;
    for (i=1; i<=15; i++)
    {
    x=(int)(Math.random()*101)+d;
    d=x;
    System.out.print(x+" ");
    }
    }
    }

    import java.util.*;
    class z10_5
    {
    static Scanner reader=new Scanner(System.in);
    public static void main(String[] args)
    {
    int i,x;
    i=0;
    while (i!=15)
    {
    x=(int)(Math.random()*90)+10;
    if ((x%10!=7)&&(x/10!=7))
    {
    i++;
    System.out.print(x+" ");
    }
    }
    }
    }

    ОтветитьУдалить
  2. Решение третей задачи от AVV:

    import java.util.*;
    class no3
    {
    static Scanner read=new Scanner (System.in);
    public static void main (String[]args)
    {
    int y,y1,i=0;
    y1=((int)(9*Math.random()+1)*10+(int)(9*Math.random()+1));
    System.out.print(y1+" ");
    for(i=0;i<14;i++)
    {
    y=((int)(y1%10)*10+(int)(9*Math.random()+1));
    System.out.print(y+" ");
    y1=y;
    }
    }
    }Решение третей задачи от AVV:

    import java.util.*;
    class no3
    {
    static Scanner read=new Scanner (System.in);
    public static void main (String[]args)
    {
    int y,y1,i=0;
    y1=((int)(9*Math.random()+1)*10+(int)(9*Math.random()+1));
    System.out.print(y1+" ");
    for(i=0;i<14;i++)
    {
    y=((int)(y1%10)*10+(int)(9*Math.random()+1));
    System.out.print(y+" ");
    y1=y;
    }
    }
    }

    ОтветитьУдалить
  3. import java.util.*;
    class Zadanie_1
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int x,i,b;
    for(i = 1; i<16; i++)
    {
    x=(int)(9*Math.random())+1;
    b=x*11;
    System.out.print (b+" ");
    }
    }
    }

    ОтветитьУдалить
  4. import java.util.*;
    class Zadanie_2
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int x,i,b;
    for(i = 1; i<16; i++)
    {
    x=(int)(9*Math.random())+2;
    b=x*9;
    System.out.print (b+" ");
    }
    }
    }

    ОтветитьУдалить
  5. Vincenc, вся сложность этих задач как раз и заключается в НЕ-использовании цикла while)))

    Остальные задачи пока проверяю

    ОтветитьУдалить
  6. Annie, ты нашла довольно остроумное решение, оно генерирует все нужные числа -- увы, кроме одного: 99 не получится. А это значит -- решение неполное.

    ОтветитьУдалить
  7. Vivcenc, почему в решении задачи №4 в генераторе ты выбрал именно 101? Интересно.

    ОтветитьУдалить
  8. AVV, а вот строчку
    y1=((int)(9*Math.random()+1)*10+(int)(9*Math.random()+1))
    ты почему записал именно так?

    ОтветитьУдалить
  9. Извиняюсь, исправила:

    import java.util.*;
    class Zadanie_2
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int x,i,b;
    for(i = 1; i<16; i++)
    {
    x=(int)(10*Math.random())+2;
    b=x*9;
    System.out.print (b+" ");
    }
    }
    }

    ОтветитьУдалить
  10. Задание №2
    public class test {
    public static void main(String args[]) {
    for (int i = 0; i < 15; i++) {
    int random = (int)Math.round(Math.random()*10);
    if (random < 8)
    random += 2;
    System.out.println(random*9);
    }
    }
    }

    ОтветитьУдалить
  11. Радмир, обрати внимание, что в твоем варианте никогда не получатся, например, числа 90 и 99.

    Для этого переменная random должна иметь значение 10 или 11 -- а они не могут в твоем варианте возникнуть.

    ОтветитьУдалить
  12. Да, так это работает, молодец.
    Ты знаешь,я решал эту задачу иначе: генерировал не число целиков, а одну из его цифр, а вторую получал не генерированием, а по правилу (другая=9-сгенерированная). Тут тоже есть свои хитрости: например -- какую из цифр двузначного числа, первую или вторую, надо генерировать, а какую вычислять? Попробуй -- это интересный и, что важно, перспективный для более сложных задач, вариант. Успеха!

    ОтветитьУдалить