目录
题目链接:1.星期计算 - 蓝桥云课 (lanqiao.cn)
题目描述
思路
代码实现
BigInteger常用方法
BigDecimal常用方法
总结
题目链接:1.星期计算 - 蓝桥云课 (lanqiao.cn)
题目描述
一直今天是星期六,请问 天后是星期几。
注意用数字1到7表示星期一到星期日。
思路
问的是天后是星期几。呃,其实这道题真的就是一道非常非常纯粹的数学题目,因为即使你不会写代码,要是狠狠的算一波还是能算出来的没有一点毛病。
很简单,直接梭哈了我。
-
通过
new BigInteger("20")
创建了一个BigInteger的实例bigInteger20,它的数值是20。 -
bigInteger20.pow(22)
对bigInteger20进行了22次幂计算,并将结果赋值给binInteger2022。也就是求20的22次方。 -
通过
new BigInteger("7")
创建了一个实例bigInteger7,数值为7。 -
binInteger2.mod(bigInteger7)
计算了binInteger2022除以7的余数,并将结果赋值给res。也就是求20的22次方除以7的余数。 -
res.intValue()
将BigInteger类型的res转换为对应的int类型数值,并赋值给b。 -
System.out.println((b + 6 <= 7) ? (b + 6) : (b + 6 - 7));
中,?(三目运算符)过后的两个表达式功能是,如果b加6小于等于7,就输出b+6,否则输出b+6-7。也就是说,如果b+6超过了7,就取模7,否则就直接输出b+6。
代码实现
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger bigInteger20 = new BigInteger("20");
BigInteger binInteger2022 = bigInteger20.pow(22);
BigInteger bigInteger7 = new BigInteger("7");
BigInteger res = binInteger2.mod(bigInteger7);
Integer b = res.intValue();
System.out.println((b + 6 <= 7) ? (b + 6) : (b + 6 - 7));
}
}
BigInteger常用方法
-
add(BigInteger val)
: 返回用这个大整数和val之和的一个BigInteger。 -
subtract(BigInteger val)
: 返回用这个大整数和val之差的一个BigInteger。 -
multiply(BigInteger val)
: 返回用这个大整数和val之乘积的一个BigInteger。 -
divide(BigInteger val)
: 返回用这个大整数和val之商的一个BigInteger。 -
mod(BigInteger val)
: 返回用这个大整数除以val的余数的一个BigInteger。 -
pow(int exponent)
: 返回这个大整数的exponent次方的BigInteger。 -
gcd(BigInteger val)
: 返回this和val的最大公约数的BigInteger。 -
abs()
: 返回相应的数值的绝对值的一个BigInteger。 -
negate()
: 返回相应数值的负数的一个BigInteger。 -
intValue()
: 将此BigInteger转换为int。 -
longValue()
: 将此BigInteger转换为long。 -
floatValue()
: 将此BigInteger转换为float。 -
doubleValue()
: 将此BigInteger转换为double。
BigDecimal常用方法
-
add(BigDecimal augend)
: 返回一个其值为 (this + augend)加 的 BigDecimal。 -
subtract(BigDecimal subtrahend)
: 返回一个其值为 (this - subtrahend)减 的 BigDecimal。 -
multiply(BigDecimal multiplicand)
: 返回一个其值为 (this × multiplicand)乘 的 BigDecimal。 -
divide(BigDecimal divisor)
: 返回一个其值为 (this / divisor)除的 BigDecimal,后者的尺度为: (this.scale() - divisor.scale()),如果无法得到精确的商(即,因为它有一个无限十进制扩展),则抛出 ArithmeticException。 -
setScale(int newScale, RoundingMode roundingMode)
: 返回一个 BigDecimal ,其数值等于此 BigDecimal 的数值,尺度按需调整以保持此 BigDecimal 的小数点右侧的位数和新尺度相等。此调整由 roundingMode 参数实施。BigDecimal bDecimal = new BigDecimal("520.13141617"); // 直接去掉小数点第七位之后的位数 System.out.println(bDecimal.setScale(7, RoundingMode.DOWN).doubleValue());
得到答案:520.1314161
-
compareTo(BigDecimal val)
: 将此 BigDecimal 与指定的 BigDecimal 比较两个 BigDecimal 在数值上的大小。 -
equals(Object x)
: 将此 BigDecimal 与指定的 Object 比较。当且仅当指定的 Object 是一个 BigDecimal 的数字对象,其尺度和精度上的4个值是等的时,返回 true 。 -
intValue()
: 将此 BigDecimal 转换成int。 -
longValue()
: 将此 BigDecimal 转换成long。 -
doubleValue()
: 将此 BigDecimal 转换成double。 -
floatValue()
: 将此 BigDecimal 转换成float。
总结
直接结束,我只能说今晚的蓝桥云课并不太平。