欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

网易笔试题1:找正整数对

程序员文章站 2022-06-03 11:38:02
...

题目:
牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。
但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。
牛牛希望你能帮他计算一共有多少个可能的数对。
网易笔试题1:找正整数对

import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int k=sc.nextInt();
        long count=0;

        for(int y=k+1;y<n+1;y++){
            int t=n/y;
            int t2=n-t*y-k;
            if(t2<0)
                t2=0;
            else
                t2++;
            t*=(y-k);
            t+=t2;
            count+=t;
            //由于x是从1开始的,如果k==0的话,用t2就会多加一个最开始x=0的情况,所以这时候count-1就可以了
            if(k==0)
                count--;
        }
        /*
        //这种方法超时了
        for(int y=k+1;y<n+1;y++){
            for(int x=k;x<n+1;x++){
                if(x%y>=k)
                    count++;
                else
                    x=x+y-k-2;
            }
        }
        */
        System.out.println(count);
    }
}
相关标签: 笔试题