蓝桥杯-纸张尺寸
【摘要】 @toc 1、问题描述在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm ×× 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm ×× 594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。输入纸张的名称, 请输出纸张的大小。 2、输入格式输入一行包含一个字符串表示纸张的名称, 该名称一...
@toc
1、问题描述
在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm ×× 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm ×× 594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。
输入纸张的名称, 请输出纸张的大小。
2、输入格式
输入一行包含一个字符串表示纸张的名称, 该名称一定是 A0、A1、A2、 A3、A4、A5、A6、A7、A8、A9 之一。
3、输出格式
输出两行,每行包含一个整数,依次表示长边和短边的长度。
4、样例输入和输出
样例输入1
A0
样例输出1
1189
841
样例输入 2
A1
样例输出 2
841
594
5、解题思路
A0对折0此,A1对折1此,每次A后面的数字就是我们对折的次数,可以当作循环的判断条件。
这个题感觉太简单了,就纸张有长边longSide
和短边shortSide
,每次沿着长边对折,那么长边的边长减半就行,但是每次对折之后需要将长边和短边的长度进行比较,将数值较大的赋值为longSide
,将数值较小的赋值给shortSide
。
题目要求先输出长边再输出短边,其实这里都可以不用管,最后结果将longSide
和shortSide
中较大的先输出、较小的后输出就行。
6、代码实现
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.next();
int n = Integer.parseInt(String.valueOf(s.charAt(1)));
int a = 1189;
int b = 841;
if (n == 0) {
System.out.println(a);
System.out.println(b);
} else {
int longSide = Math.max(a, b); //长边
int shortSide = Math.min(a, b);//短边
for (int i = 0; i < n; i++) {
if (longSide < shortSide) {
int temp = longSide;
longSide = shortSide;
shortSide = temp;
}
longSide /= 2;
}
System.out.println(Math.max(longSide, shortSide));
System.out.println(Math.min(longSide, shortSide));
}
scan.close();
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)