蓝桥网试题——字母图形(附:Math类的常用方法)

蓝桥杯字母图形输出题解
本文介绍了一种巧妙的方法来解决蓝桥杯竞赛中的一道字母图形输出题,通过计算坐标差的绝对值得到字母的位置,附带Java代码实现。

本题目来自蓝桥网试题集http://lx.lanqiao.cn/problem.page?gpid=T7

问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。

看到网上这个题的题解形形色色,不过我看大部分题解让我这种算法小白一时难以理解o(╥﹏╥)o,看到页面上有两个锦囊,点进去,咦~原来还有这种巧妙地方法……
在这里插入图片描述
本题用的便是锦囊一所提供的方法:字母的序号与两个坐标的差的绝对值有关。

Java代码如下:

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	String []str={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
	int n,m,i,j,k;
	Scanner input=new Scanner(System.in);
	 n=input.nextInt();
	 m=input.nextInt();
	 for(i=0;i<n;i++){
		for(j=0;j<m;j++){
			k=Math.abs(i-j);         //所在坐标的x、y差值的绝对值是str数组中字母的下标序号
			System.out.print(str[k]);
		}
		System.out.println("");
	}
}

}

附:Math类的常用方法:

S.N. 方法 & 描述
1 static double abs(double a) 
此方法返回一个double值的绝对值.
2 static float abs(float a) 
此方法返回一个float值的绝对值.
3 static int abs(int a) 
此方法返回一个int值的绝对值.
4 static long abs(long a) 
此方法返回一个long值的绝对值.
5 static double acos(double a) 
此方法返回一个值的反余弦值,返回的角度范围从0.0到pi.
6 static double asin(double a) 
此方法返回一个值的反正弦,返回的角度范围在-pi/2到pi/2.
7 static double atan(double a) 
此方法返回一个值的反正切值,返回的角度范围在-pi/2到pi/2.
8 static double atan2(double y, double x) 
此方法返回角度theta(x,y)从转换的矩形坐标到极坐标(r,θ).
9 static double cbrt(double a) 
此方法返回一个double值的立方根.
10 static double ceil(double a) 
此方法返回最小的(最接近负无穷大)double值,大于或等于参数,并等于一个整数.
11 static double copySign(double magnitude, double sign) 
此方法返回的第一个浮点参数与第二个浮点参数的符号.
12 static float copySign(float magnitude, float sign) 
此方法返回的第一个浮点参数与第二个浮点参数的符号.
13 static double cos(double a) 
此方法返回一个角的三角余弦.
14 static double cosh(double x) 
此方法返回一个double值的双曲余弦.
15 static double exp(double a) 
此方法返回欧拉数e的一个double值的次幂.
16 static double expm1(double x) 
此方法返回 ex -1.
17 static double floor(double a) 
此方法返回最大的(最接近正无穷大)double值小于或相等于参数,并相等于一个整数.
18 static int getExponent(double d) 
此方法返回的无偏指数在该项表述的double.
19 static int getExponent(float f) 
此方法返回一个浮点数的表示中使用的无偏指数.
20 static double hypot(double x, double y) 
没有中间溢出或下溢的情况下,此方法返回的sqrt(x2 +y2) .
21 static double IEEEremainder(double f1, double f2) 
这两个参数,IEEE 754标准规定的方法计算,其余操作.
22 static double log(double a) 
此方法返回一个double值的自然对数(以e为底).
23 static double log10(double a) 
此方法返回一个double值以10为底.
24 static double log1p(double x) 
此方法返回自然对数的总和的参数.
25 static double max(double a, double b) 
此方法返回两个double值较大的那一个.
26 static float max(float a, float b) 
此方法返回的两个浮点值最大的那一个.
27 static int max(int a, int b) 
此方法返回两个int值中最大的那一个.
28 static long max(long a, long b) 
此方法返回的两个long值中最大的那一个.
29 static double min(double a, double b) 
此方法返回的两个较小的double值.
30 static float min(float a, float b) 
此方法返回的两个较小的浮动值.
31 static int min(int a, int b) 
此方法返回的两个较小的int值.
32 static long min(long a, long b) 
此方法返回的两个较小的长值.
33 static double nextAfter(double start, double direction) 
此方法返回浮点数相邻方向的第二个参数,第一个参数.
34 static float nextAfter(float start, double direction) 
此方法返回浮点数相邻方向的第二个参数,第一个参数.
35 static double nextUp(double d) 
在正无穷大的方向,此方法返回至d相邻的浮点值.
36 static float nextUp(float f) 
此方法返回到f相邻的浮点值在正无穷方向上.
37 static double pow(double a, double b) 
此方法返回的第一个参数的值提升到第二个参数的幂
38 static double random() 
该方法返回一个无符号的double值,大于或等于0.0且小于1.0.
39 static double rint(double a) 
此方法返回的double值,值的参数是最接近的,相等于一个整数.
40 static long round(double a) 
此方法返回的参数最接近的long.
41 static int round(float a) 
此方法返回的参数最接近的整数.
42 static double scalb(double d, int scaleFactor) 
此方法返回d × 2scaleFactor 四舍五入,如果由一个单一的正确舍入的浮点乘法的double值组的成员.
43 static float scalb(float f, int scaleFactor) 
此方法返回f × 2scaleFactor 四舍五入,如果由一个单一的正确舍入的浮点乘法,浮点值集合的成员.
44 static double signum(double d) 
此方法返回signum函数的参数,如果参数是零返回0,如果参数大于零返回1.0,如果参数小于零返回-1.0.
45 static float signum(float f) 
此方法返回signum函数的参数,如果参数是零返回0,如果参数大于零返回1.0f,如果参数小于零返回-1.0f.
46 static double sin(double a) 
此方法返回一个double值的双曲正弦.
47 static double sinh(double x) 
此方法返回一个double值的双曲正弦.
48 static double sqrt(double a) 
此方法返回正确舍入的一个double值的正平方根.
49 static double tan(double a) 
此方法返回一个角的三角函数正切值
50 static double tanh(double x) 
此方法返回一个double值的双曲正切.
51 static double toDegrees(double angrad) 
这种方法大致相等的角度,以度为单位的角度转换成弧度测量.
52 static double toRadians(double angdeg) 
此方法转换一个角度,以度为单位大致相等的角弧度测量.
53 static double ulp(double d) 
此方法返回的参数的ulp的大小.
54 static double ulp(float f) 
此方法返回的参数的ulp的大小.

最后安利大家一个挺齐全的学习网站易百教程 (不是广告!我没收钱!请网站方看到后给我打钱……)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值