为什么函数会跳错,是什么原因


package acm;

import java.util.Scanner;

public class B {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in =new Scanner(System.in);
        int n,m;//n为一工的袜子数量,m为询问的次数
        int l,r;//l,r为询问的区间
        int i,j,k,o,g;
        int x,y;//x为总共的可能性,y为取到相同颜色袜子的可能性
        int[]a=new int [1000];
        int[]b=new int [1000];
        n=in.nextInt();
        m=in.nextInt();
        for(k=1;k<=n;k++)
        {
            a[k]=in.nextInt();
        }
        for(i=0;i<m;i++)
        {
            y=0;
            for(int t=0;t<1000;t++)b[t]=0;
            l=in.nextInt();
            r=in.nextInt();
            x=(l-r)*(l-r+1)/2;
            for(o=l;o<=r;o++)
            {
                b[a[o]]++;////b数组的索引就是袜子颜色,对应的值就是该颜色袜子的数量
            }
            for(j=1;j<1000;j++)
            {
                if(b[j]>=2)
                {
                    y=y+b[j]*(b[j]-1)/2;
                }
            }
            if(y==0)
            System.out.println("0/1");
            else
            {
                g=gongyueshu(x,y);
                x=x/g;y=y/g;
                System.out.println(y+"/"+x);
            }
            
            
        }

       public static int gongyueshu(int a,int b)
       {
           int k=1;
           for(int i=a;i>=2;i--)
           {
               if(a%i==0 && b%i==0)
               {
                   k*=i;
                   a/=i;
                   b/=i;
               }
           }
           return k;
       }
    }

}

img

写错位置了

img