网易笔试题1:找正整数对
程序员文章站
2022-06-03 11:38:02
...
题目:
牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。
但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。
牛牛希望你能帮他计算一共有多少个可能的数对。
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);
}
}
上一篇: Servlet的生命周期
下一篇: Servlet的生命周期
推荐阅读