数对

原创 2018年04月16日 11:23:42
/*
 * 5.数对
 * 时间限制:1秒
 * 空间限制:32768K
 * 牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。
 * 但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。
 * 牛牛希望你能帮他计算一共有多少个可能的数对。
 * 输入描述:
 * 输入包括两个正整数n,k(1 <= n <= 10^5, 0 <= k <= n - 1)。
 * 输出描述:
 * 对于每个测试用例, 输出一个正整数表示可能的数对数量。
 * 输入例子1:
 * 5 2
 * 输出例子1:
 * 7

 */

解法一(较优):

public class 数对1 {
	/**
     * 因为x%y==k,则y的取值范围为(k,n],则y确定时,x在其区间【0,n】内可取(n/y)个模等价区间,
     * 其中有y-k个值符合x的定义。则有(n/y)*(y-k)个。
     * 在最后一段区间n%y中,若n%y>=k,则有n%y-k+1个值符合,故sum+=(n/y)*(y-k)+(n%y>=k?n%y-k+1:0);
     * 当k==0时,x,y可取n内任一值,故有n*n种。
     */

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Long start = System.currentTimeMillis();
		Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        long k = sc.nextLong();

        long result = 0;
        if (k == 0){
            result = n* n;
        }else {
            for (long i = k+1; i <= n; i++) {
                result+=(n/i)*(i-k)+Math.max(n%i-k+1,0);
            }
        }

        System.out.println(result);
        Long end = System.currentTimeMillis();
        System.out.println(end-start+"ms");
	}

}

解法二(暴力循环):

public class 数对2 {

	public static void main(String[] args) {
		Long start = System.currentTimeMillis();
		
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int k = sc.nextInt();
		
		int count=0;
		if(k==0){
			count=n*n;
		}else{
			for(int i=k;i<=n;i++){
				for(int j=k+1;j<=n;j++){
					if(i%j>=k){
						count++;
					}
				}
			}
		}

		System.out.println(count);
		Long end = System.currentTimeMillis();
		System.out.println(end-start+"ms");
	}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GL60708/article/details/79958258

机器学习案例实战第四课-神经网络模型

将复杂的神经网络模型分解成一个个小的知识点,逐个攻破,详细分析神经网络结构中的每一个细节与实际效果,demo演示神经网络的实际效果,分析不同参数对结果的影响以及神经网络该如何解决过拟合问题以及实际训练中的挑战。
  • 2017年05月04日 23:13

PAT 1007. 素数对猜想 (20);判断一个数为素数;java实现

1007. 素数对猜想 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B ...
  • haiyoung
  • haiyoung
  • 2016-03-05 14:54:58
  • 1053

PTA-素数对猜想

这是PTA上的中国大学MOOC数据结构-起步能力测试题,如下: 自测-2 素数对猜想(20 分) 让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第...
  • qq_29303759
  • qq_29303759
  • 2017-09-14 20:49:12
  • 279

算法训练 数对

问题描述   编写一个程序,该程序从用户读入一个整数,然后列出所有的数对,每个数对的乘积即为该数。   输入格式:输入只有一行,即一个整数。   输出格式:输出有若干行,每一行是一个乘法式子。(注意:...
  • qq_29656961
  • qq_29656961
  • 2017-01-08 12:34:30
  • 420

C++——哈希&二分&队列例题——数对个数

题目描述 给出一串数以及一个数字 C,要求计算出所有 A-B=C 的数对的个数。规定:不同位置的数字一样的数对算不同的数对。 输入格式 第一行包括 2 个非负整数 N 和 C(C≠0),中间用...
  • McDonnell_Douglas
  • McDonnell_Douglas
  • 2017-01-21 14:08:04
  • 334

1007. 素数对猜想 (20)(java实现)

最开始提交的时候最后一组数据一直运行超时,相同代码换成c++也是,百思不得其解。。最后上课的时候想到判断是否是素数的时候,自己之前循环的num/2,但其实到100000就要循环5000次,之前刚开始写...
  • cswoniu111
  • cswoniu111
  • 2017-03-28 21:44:54
  • 401

【C++】浙大PAT (Basic Level)1007. 素数对猜想 (20)

1007. 素数对猜想 (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue...
  • artemisrj
  • artemisrj
  • 2014-01-19 19:21:16
  • 957

腾讯模拟考之素数对问题

题目 给你一个整数n,如果可以由素数对构成,则输出素数对的个数,如10由(5,5)(3,7)构成,所以输出结果为2. tips:先找出范围内的素数,使用标记的方法,查看n-素数结果还是不是...
  • cq340321
  • cq340321
  • 2017-03-25 17:55:03
  • 210

素数对

题目 - 素数对   描述 两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出特定范围内的素数对。 关于输入 ...
  • caopeng_pku
  • caopeng_pku
  • 2014-10-14 16:12:21
  • 1193

1007. 素数对猜想 (20) (数学啊 ZJU_PAT)

1007. 素数对猜想 (20) (数学啊 ZJU_PAT)
  • u012860063
  • u012860063
  • 2014-11-23 10:59:37
  • 2178
收藏助手
不良信息举报
您举报文章:数对
举报原因:
原因补充:

(最多只允许输入30个字)