第十三届蓝桥杯真题Java c组C.纸张尺寸(持续更新)

  • 博客主页:音符犹如代码
  • 系列专栏:蓝桥杯
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

【问题描述】

        在 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};  
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值