- 博客主页:音符犹如代码
- 系列专栏:蓝桥杯
- 关注博主,后期持续更新系列文章
- 如果有错误感谢请大家批评指出,及时修改
- 感谢大家点赞👍收藏⭐评论✍
【问题描述】
在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm × 841mm,将 A0 纸 沿长边对折
后为 A1 纸,大小为 841mm × 594mm,在对折的过程中长度直接取 下整(实际裁剪时可能
有损耗)。将 A1 纸沿长边对折后为 A2 纸,依此类推。
输入纸张的名称,请输出纸张的大小。
【输入格式】
输入一行包含一个字符串表示纸张的名称,该名称一定是 A0、A1、A2、 A3、A4、
A5、A6、A7、A8、A9 之一。
【输出格式】
输出两行,每行包含一个整数,依次表示长边和短边的长度。
【样例输入 1】
A0
【样例输出 1】
1189
841
【样例输入 2】
A1
【样例输出 2】
841
594
import java.util.Scanner;
public class Main {
// 初始A0纸的长和宽(单位:毫米)
private static final int A0_LENGTH = 1189;
private static final int A0_WIDTH = 841;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String paperName = scanner.nextLine().trim();
// 获取纸张的级别(例如 A0 是 0,A1 是 1,依此类推)
int level = getPaperLevel(paperName);
// 根据级别计算长和宽
int[] size = calculateSize(level);
// 输出结果
System.out.println(size[0]);
System.out.println(size[1]);
scanner.close();
}
// 获取纸张的级别
private static int getPaperLevel(String paperName) {
return paperName.charAt(1) - '0';
}
// 根据级别计算长和宽
private static int[] calculateSize(int level) {
// 长边和短边
int length = A0_LENGTH;
int width = A0_WIDTH;
// 对折 level 次
for (int i = 0; i < level; i++) {
// 每次对折都是把长边变成新的短边,短边变成长边的一半(取下整)
int newLength = width;
int newWidth = length / 2;
length = newLength;
width = newWidth;
}
return new int[]{length, width};
}
}