Java 厨师与发电机

Java 厨师与发电机,java,optimization,constraints,Java,Optimization,Constraints,这是一个交互问题 N-完美数定义为一个正整数,在十进制表示法中最多有N个数字,不带前导零,也就是说,如果0,X是一个N-完美数 厨师有一个朋友名叫迪纳摩,他是一位传奇魔术师。厨师从他那里学到了一个新的魔术,现在,他想通过向朋友切法展示这个魔术来给她留下深刻印象: 首先,Cheffa应该选择一个正整数N并告诉Chef。 然后,Cheffa应该选择一个N-完美数A并告诉Chef,Chef应该选择一个正整数S并告诉Cheffa。 然后,Cheffa和Chef应该按照这个顺序交替告诉对方四个N-完全数B

这是一个交互问题

N-完美数定义为一个正整数,在十进制表示法中最多有N个数字,不带前导零,也就是说,如果0,X是一个N-完美数 厨师有一个朋友名叫迪纳摩,他是一位传奇魔术师。厨师从他那里学到了一个新的魔术,现在,他想通过向朋友切法展示这个魔术来给她留下深刻印象:

首先,Cheffa应该选择一个正整数N并告诉Chef。 然后,Cheffa应该选择一个N-完美数A并告诉Chef,Chef应该选择一个正整数S并告诉Cheffa。 然后,Cheffa和Chef应该按照这个顺序交替告诉对方四个N-完全数B、C、D和E。Cheffa选择B和D,而Chef选择C和E。 如果S等于A+B+C+D+E,Cheffa会非常感动。否则,Cheffa会因为厨师用失败的魔术浪费时间而生气。 既然厨师在厨房里忙得不可开交,你应该为他表演魔术,给切法留下深刻印象。评分员扮演着Cheffa的角色,试图让魔术失败

相互作用 首先,您应该阅读一行包含一个整数T的内容。 对于每个测试用例,您应该从读取包含单个整数N的行开始。然后,您应该执行以下操作: 读取包含单个整数a的行。 打印包含单个整数S的行。 读取包含单个整数B的行。 打印包含单个整数C的行。 读取包含单个整数D的行。 打印包含单个整数E的行。 最后,您应该读取一行,其中包含一个整数:1,如果您的预测和S是正确的,或者−1如果不正确。 请注意,当您收到−1在测试用例结束时,您应该立即终止您的程序,以收到错误的答案判决;否则,您可能会收到任何判决。打印每行后,不要忘记刷新输出

约束条件

一,≤T≤一千

一,≤N≤十八


一,≤A、 B,C,D,E您的解决方案有缺陷,因为您在开始时将C指定为1。试着把它改大,使C和E的值成为动态的。

我认为这个问题应该有优化和约束标签。约束?约束是存在的,我可以看出你的问题有约束。看看你的帖子下面,在底部有一个蓝色的标签叫java。我想你应该编辑你的帖子,在下面添加相关的标签,好吗?我忘了包括tagsQuestion是从一个正在进行的CodeChef竞赛中获得的。所以我必须使用随机函数,嗯?@Rock_StarboY-我怀疑你在随机选择中是否会成功。我将使用随机函数,这样它就不会超过N个完美数,那么它也不会出现?@Rock_StarboY-我不知道随机选择如何保证这是正确的结果是等于A+B+C+D+E。@Armali好的,我明白
            1

            2

            10
            10
            10
            1

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();
    }

    }

}