京东,数据分析,第二题 求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;
    }
}

全部评论
点赞 回复 分享
发布于 2018-04-09 21:32
点赞 回复 分享
发布于 2018-04-09 21:12
import java.util.Scanner; public class Main5 {     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         int t = in.nextInt();         long[] arr = new long[t];         for (int i = 0; i < t; i++) {             arr[i] = in.nextLong();         }         for(long N : arr){             fun(N);         }     }     public static void fun(long N){         if(N%2 != 0){             System.out.println("No");             return ;         }         long X = 0;         long Y = 0;         for(int i=1;i<=N/2;i++){             Y = i*2;             if(N%Y == 0){                         X = N/Y;                 if(X%2!=0){                     System.out.println(X+" "+Y);                     return ;                 }             }         }     } 已AC通过!
点赞 回复 分享
发布于 2018-04-09 21:18
这题很简单吧。。xyn都用long存, 先判断n是不是奇数,是的话直接返回no 然后y从2开始,每次加2,判断x是不是奇数就行了
点赞 回复 分享
发布于 2018-04-09 21:22
不是说了不会是2的次幂吗
点赞 回复 分享
发布于 2018-04-09 21:09
本地测试通过,线上测评ac0%
点赞 回复 分享
发布于 2018-04-09 21:10
我是直接除2,直接除到不能除,然后不知道为什么一直不过!
点赞 回复 分享
发布于 2018-04-09 21:11
是这个意思嘛,Y是偶数,不一定是2的多少次啊,
点赞 回复 分享
发布于 2018-04-09 21:16
public class Main2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = Integer.parseInt(in.nextLine()); List<String> res = new ArrayList<>(); for (int i = 0; i < N; i++) { long v = in.nextLong(); if (v % 2 == 1) { res.add("No"); } else { long v1 = v; while (v1 % 2 == 0) { v1 = v1 / 2; } long v2 = v / v1; res.add(v1 + " " + v2); } } for (String word : res) { System.out.println(word); } } }
点赞 回复 分享
发布于 2018-04-09 21:17
分析一下最小的偶数只可能是2的幂就可以了
点赞 回复 分享
发布于 2018-04-09 21:27

相关推荐

11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务