Java 厨师与发电机
这是一个交互问题 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≤十八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
一,≤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();
}
}
}