蓝桥杯真题-裁纸刀(填空)
小蓝有一个裁纸刀,每次可以将一张纸沿一条直线裁成两半。小蓝用一张纸打印出两行三列共 6 个二维码,至少使用九次裁出来,下图给出了一种裁法。
![](https://img-blog.csdnimg.cn/img_convert/14e61d8a55d247d4a2dc0b463a08549a.png)
在上面的例子中,小蓝的打印机没办法打印到边缘,所以边缘至少要裁 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();
}
}
![](https://img-blog.csdnimg.cn/img_convert/90a3a97fdc3e40f885a548b0842554ef.png)
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();
}
}
![](https://img-blog.csdnimg.cn/img_convert/47b01847af784105b8a20666df73cff0.png)