一道编程笔试题的迷茫

我前几天在牛客网上做笔试题做到了这样的一个题,我最后未通过测试案例。我有点百思不得其解的意味啊!

题目是这样的

有一个分数数组a[i](1<=i<=3),其中a[i]=p[i]/q[i]

1.要求第一次输入一个数作为接下来的分数个数。

2.第二次输入p[i]

3.第三次输入q[i]

4.最后输出a[i]的和,并化简。

要求具有如下输入和输出格式:



最后我的代码是

import java.util.Scanner;

public class Main {

	int ap,aq;
	public static void main(String[] args) {
		Scanner scn=new Scanner(System.in);
		Scanner scn1=new Scanner(System.in);
		Scanner scn2=new Scanner(System.in);
		int inp=scn.nextInt();
		String str1=scn1.nextLine();
		String str2=scn2.nextLine();
		
		String[] str11=new String[inp];
		String[] str21=new String[inp];
		
		str11=str1.split(" ");
		str21=str2.split(" ");
		
		int[] p=new int[inp];
		int[] q=new int[inp];
	
		
		for(int i=0;i<inp;i++){
			p[i]=Integer.parseInt(str11[i]);
			q[i]=Integer.parseInt(str21[i]);
		}
		
		if(inp==1){
			int[] shu=yue(p[0],q[0]);
			System.out.println(shu[0]+" "+shu[1]);
		}else{
		    if(inp==2){
			    int[] shu=yue(p[0]*q[1]+p[1]*q[0],q[0]*q[1]);
			    System.out.println(shu[0]+" "+shu[1]);
		     }
		    else{
		    	int a=p[0]*q[1]+p[1]*q[0];
		    	int b=q[0]*q[1];
		    	int[] shu=yue(a*q[2]+b*p[2],b*q[2]);
		    	System.out.println(shu[0]+" "+shu[1]);
		    }
		}
        scn.close();
        scn1.close();
        scn2.close();
	}

	public static int[] yue(int p,int q){
		int p1=p,q1=q;
		int i=2;
		do{
			if(p%i==0&&q%i==0){
				p=p/i;
				q=q/i;
				break;
			}
			i++;
		}while(i==p+1);
		int[] shu=new int[2]; 
		shu[0]=p;
		shu[1]=q;
		
		if(p1==p&&q1==q)
			return shu;
		else
			shu=yue(p,q);
		
		return shu;
	}
}

在我的本地IDE上能运行并得到结果,但在网页端结果未通过。

牛客网当时应该是有20-50组测试案例,但我的case通过率为0.00%。

今天我将这份代码粘在这,希望有大佬帮我看看,指点指点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值