Шеф-повар и Динамо - PullRequest
       54

Шеф-повар и Динамо

0 голосов
/ 12 января 2020

Это интерактивная проблема.

N-совершенное число определяется как положительное целое число, содержащее не более N цифр (в десятичном представлении без ведущих нулей), то есть X является N-совершенным числом если 0

У шеф-повара есть друг по имени Динамо, легендарный маг. Шеф узнал от него новую магическую уловку c, и теперь он хочет произвести впечатление на своего друга Чеффу, показав ей уловку:

Сначала Чеффа должен выбрать положительное целое число N и сообщить его Шефу. Затем Чеффа должен выбрать N-совершенное число А и сообщить его Шефу, который затем должен выбрать положительное целое число S и сообщить Чеффе. Затем Чеффа и Шеф должны поочередно сказать друг другу четыре N-совершенных числа B, C, D и E (в этом порядке). Cheffa выбирает B и D, а Chef выбирает C, и E. Cheffa будет действительно впечатлен, если S окажется равным A + B + C + D + E. В противном случае, Чеффа будет сердиться, что Шеф тратит свое время на неудавшийся трюк с магией c. Поскольку шеф-повар занят на кухне, вы должны выполнить для него магический трюк c и произвести впечатление на Чеффу. Грейдер действует как Чеффа и пытается заставить волшебный трюк не работать.

Взаимодействие Сначала вы должны прочитать строку, содержащую одно целое число T. Ниже приведено описание взаимодействия для T тестовых случаев. Для каждого теста вы должны начать с чтения строки, содержащей одно целое число N. Затем вы должны выполнить следующие действия: прочитать строку, содержащую одно целое число A. вывести строку, содержащую одно целое число S. прочитать строку, содержащую одно целое число B. Выведите строку, содержащую одно целое число C. Прочитайте строку, содержащую одно целое число D. Напечатайте строку, содержащую одно целое число E. Наконец, вы должны прочитать строку, содержащую одно целое число: 1, если ваша прогнозируемая сумма S верна, или -1, если она неверна. Обратите внимание, что когда вы получаете -1 в конце теста, вы должны немедленно прекратить свою программу, чтобы получить вердикт о неправильном ответе; в противном случае вы можете получить любой вердикт. Не забывайте грипп sh вывод после печати каждой строки!

Ограничения

1≤T≤1000

1≤N≤ 18

1≤A, B, C, D, E <10 ^ N </p>

1≤S≤5⋅10 ^ N

Пример

Вы и Грейдер

            1

            2

            10

50

            10

12

            10

8

            1

Объяснение Пример варианта 1: сумма A = 10, B = 10, C = 12, D = 10 и E = 8 равна 50, что совпадает с прогнозируемой суммой.

Обратите внимание, что этот пример просто должен прояснить взаимодействие. Грейдер не будет таким дружелюбным.

Мой код:


import java.util.*;
 import java.math.BigInteger;
import java.io.*;


class CodeChef {

    static class MyScanner{
        BufferedReader br;
        StringTokenizer st;

        MyScanner(){
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        MyScanner(FileReader fileReader){
            br = new BufferedReader(fileReader);
        }

        String nn(){
            while(st == null || !st.hasMoreElements()){
                try{
                    st = new StringTokenizer(br.readLine());
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int ni(){
            return Integer.parseInt(nn());
        }

        double nd(){
            return Double.parseDouble(nn());
        }

        long nl(){
            return Long.parseLong(nn());
        }
    }

private static PrintWriter out;
    public static void main(String[] args) {





        int testCases = 0;

        Scanner sc1 = new Scanner(System.in);
        if(sc1.hasNext())
        {
         testCases = sc1.nextInt();
        }

        sc1.close();


        while(testCases!=0)
        {

            MyScanner sc = new MyScanner();
            out = new PrintWriter(new BufferedOutputStream(System.out));


            int N = sc.ni();

            int S=0,C=1,E=0;

            int A = sc.ni();

            Random rand = new Random();
            //S
            S = (int) Math.pow(10,N) - 1;

            //S
            out.println(S);
            out.flush();

            int B = sc.ni();

            //C
            out.println(C);
            out.flush();

            int D = sc.ni();

            //E 
            E = S - (A+B+C+D);
            out.println(E);
            out.flush();

            if(sc.ni() == -1)
            {
            //  System.exit(-1);  
            break;
            }


        testCases--;
        out.close();
    }

    }

}

Я получаю ошибку WA (неправильный ответ) при выполнении этой проблемы?

1 Ответ

0 голосов
/ 13 января 2020

Ваше решение некорректно, так как вы вначале присвоили C как 1. Попробуйте изменить его и задайте значения C и E Dynami c.

...