[AtCode 4104] Small and Large Integers

博客分享AtCoder上一道题的解题情况,该题易踩坑,原以为比较[b,a]间长度和k,实际应和2k比较,强调做题要沉心静气,还给出AC代码的转载链接。

题目链接:https://abc093.contest.atcoder.jp/tasks/abc093_b?lang=en

这个题虽然很水,但是还是很容易踩坑,比如我,直接想到了[b,a]之间的长度和k的比较,其实不对,用介于(k+2k)/2之间的数验证一下就不对,考虑到对称性,应该是和2k进行比较。

做题还是应该沉心静气,不可眼高手低。

AC代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long a = scanner.nextLong();
        long b = scanner.nextLong();
        long k = scanner.nextLong();
        if(b-a+1 <= 2*k) {
            for(long i = a;i <= b;i++) {
                System.out.println(i);
            }
        } else {
            long i,j;
            for(i = a;i < k+a;i++) {
                System.out.println(i);
            }
            for(j = b-k+1;j <= b;j++) {
                System.out.println(j);
            }
        }
    }
}
//这是错误代码:
//用数据 4 7 3验证即可知道结果不对
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long a = scanner.nextLong();
        long b = scanner.nextLong();
        long k = scanner.nextLong();
        if(b-a+1 <= k) {
            for(long i = a;i <= b;i++) {
                System.out.println(i);
            }
        } else {
            long i,j;
            for(i = a;i < k+a;i++) {
                System.out.println(i);
            }
            for(j = b-k+1;j <b;j++) {
                if(j == i-1)
                    continue;
                System.out.println(j);
            }
            System.out.print(b);
        }
    }
}

转载于:https://www.cnblogs.com/youpeng/p/10545310.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值