京东,数据分析,第二题 求x*y=n的数
附上代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
if(n<1 || n>1000){ System.out.println("No");
}
int nows[] =new int[n];
while(in.hasNext()){ for (int i=0;i<n;i++){ nows[i]=in.nextInt(); } String[] res = get_res(nows); for(String str:res){ System.out.println(str); }
}
}
static String[] get_res(int[] nows){ String res[] = new String[nows.length]; for(int i =0;i<nows.length;i++){ //如果是2的次幂 if((nows[i]&(nows[i]-1))==0 || nows[i]<2 || nows[i]>Math.pow(2, 63)){ res[i]="No"; }else{ res[i]=get_x_y(nows[i]); } } return res;
}
//得到一个数的x*y=n的所有值
static String get_x_y(int n){ String res ="No"; int x=2,y=n; while(x<y){ if(x*y==n){ //x和y的位置互换 if(x%2==0 && y%2!=0){ res = y+" "+x; } break; } else if(x*y<n){ x++; }else if(x*y>n){ y--; } } return res;
}
}

查看7道真题和解析
vivo公司福利 364人发布
