3/25最短路径专题

  1. 蓝桥杯真题-裁纸刀(填空)

小蓝有一个裁纸刀,每次可以将一张纸沿一条直线裁成两半。小蓝用一张纸打印出两行三列共 6 个二维码,至少使用九次裁出来,下图给出了一种裁法。

在上面的例子中,小蓝的打印机没办法打印到边缘,所以边缘至少要裁 4 次。另外,小蓝每次只能裁一张纸,不能重叠或者拼起来裁。如果小蓝要用一张纸打印出 20 行 22 列共 440 个二维码,他至少需要裁多少次?

思路:由题可知纸张的边缘至少要裁剪4次,接下来按照横线5裁剪一次,竖线6、7、8、9裁剪四次,由此可知沿着边缘裁剪4次后,需至少沿横线裁剪(行数-1)次、沿竖线裁剪[行数*(列数-1)]次,即至少裁剪次数=4(沿边缘)+(行数-1)+行数*(列数-1)。

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        int row = 20;
        int col = 22;
        // 计数
        int count = 0;
        count = 4 + (row - 1) + row * (col - 1);
        System.out.println(count);
        scan.close();
    }
}

2、蓝桥杯真题-刷题统计

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天 做 a 道题目, 周六和周日每天做 b 道题目。请你帮小明计算, 按照计划他将在 第几天实现做题数大于等于 n 题?

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        // 周一到周五每天做的题数
        long a = scan.nextLong(); 
        // 周六、日每天做的题数
        long b = scan.nextLong();
        // 目标题数
        long n = scan.nextLong();
        // 每周的刷题数
        long week = 5 * a + 2 * b;
        // 做了多少周(取整)
        long temp = n / week;
        // 余下多少题没做(取余)
        long surplus = n % week;
        // 余数为0,直接输出天数=周数*7
        if(surplus == 0){ 
          System.out.println(temp * 7);
        }else{
          // 定义计数
           long count = 0;
           long i = 1;
          //  记录做完余下的题还需要几天,最多为6天
          while(count < surplus){
            if(i % 6 == 0){
              count += b;
            }else{
              count += a;
            }
            // 停止循环条件
            if(count >= surplus){
              break;
            }
            i++;
          }
          System.out.println(temp * 7 + i);
        }
        scan.close();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值