问题:
乌托邦树每年经历2个增长周期。第一个生长周期发生在春季,高度翻倍。第二个生长周期发生在夏季,当它的高度增加1米。 现在,一个新的乌托邦树苗在春天开始种植。它的高度是1米。在N个生长周期后你能找到树的高度吗?
输入格式 第一行包含一个整数,T,测试用例的数量。 T线跟随。每行包含一个整数N,表示该测试用例的周期数。
Constraints
1 <= T <= 10
0 <= N <= 60
输出格式 对于每个测试用例,在N个周期后打印Utopian树的高度。
//最后,希望如此......问题是什么......
初始价值是1 ..如果春天发生......它的价值将会加倍......这意味着......它将被2倍增加但是如果夏天发生它的价值将增加按1 ...
如果我提供输入:
2 //here 2 is the number of question..
0
1
所以,输出必须是:
1
2
另一个例子,
输出样本:
2
3
4
因此,输入样本将是:
6
7
希望如此......你理解了什么问题,现在我们要把程序变成JAVA ....
好的,我进一步为此制作了一个节目..
package com.logical03;
import java.util.Scanner;
public class MainProgram{
public static void main(String[] args){
int num=1;
int[] array=new int[100];
Scanner in=new Scanner(System.in);
System.out.println("Enter the number of Questions: ");
int n_Elements=in.nextInt();
System.out.println("Enter the values now: ");
for(int i=1; i<=n_Elements; i++){
array[i]=in.nextInt();
}
for(int i=1; i<=n_Elements; i++){
if(array[i]==0){
System.out.println("\n1");
}
else{
for(int j=1; j<=array[i]; j++){
if(j%2!=0){
num=num*2;
}
else{
num=num+1;
}
}
System.out.println(num);
}
}
}
}
当我遇到这里..它将第二个问题添加到我的输出中..假设..
如果我输入的内容为:
2
3
4
因此,输出必须假设为:
6
7
哪个是对的!!
但我的程序输出为:
6
27 //which is incorrect..becoz it adds the sum of above number :(
答案 0 :(得分:2)
错误 - int num = 1;
以刷新它的值。
public static void main(String[] args) {
int[] array = new int[100];
Scanner in = new Scanner(System.in);
System.out.println("Enter the number of Questions: ");
int n_Elements = in.nextInt();
System.out.println("Enter the values now: ");
for (int i = 1 ; i <= n_Elements ; i++) {
array[i] = in.nextInt();
}
for (int i = 1 ; i <= n_Elements ; i++) {
int num = 1;
if (array[i] == 0) {
System.out.println("\n1");
} else {
for (int j = 1 ; j <= array[i] ; j++) {
if (j % 2 != 0) {
num = num * 2;
} else {
num = num + 1;
}
}
System.out.println(num);
}
}
}
<强>输出强>
Enter the number of Questions:
2
Enter the values now:
3
4
6
7
答案 1 :(得分:1)
我的方法是考虑到第一个循环(2 *高度)出现在赔率索引上,第二个cicle(1 +高度)出现在偶数索引上(从1到n(含)),起始索引0始终为1
return IntStream.rangeClosed(1, n)
.reduce(1, (acc, idx) -> idx % 2 != 0 ? acc * 2 : acc + 1);
答案 2 :(得分:-2)
这是我的第一个贡献,只学习编码和解算算法,我必须找到一个可行的解决方案,简单地遵循代码信用http://www.javainterview.net/HackerRank/utopian-tree
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
//receive input
Scanner in = new Scanner(System.in);
//no of test cases
int T=in.nextInt();
//no of cycles
int[] N = new int[T];
for(int i=0;i<T;i++){
N[i]=in.nextInt();
}
int height=1;
for(int i=0;i<N.length;i++){
height=1;
for(int j=1;j<=N[i];j++){
if((j%2) ==1)
height=height*2;
else
height++;
}
System.out.println(height);
}
}
}//this the end of the class