2022年蓝桥杯省赛——星期计算

目录

题目链接:1.星期计算 - 蓝桥云课 (lanqiao.cn)

题目描述

思路

代码实现

BigInteger常用方法

BigDecimal常用方法

 

总结


题目链接:1.星期计算 - 蓝桥云课 (lanqiao.cn)

题目描述

        一直今天是星期六,请问 20^{22} 天后是星期几。

        注意用数字1到7表示星期一到星期日。


思路

        问的是20^{22}天后是星期几。呃,其实这道题真的就是一道非常非常纯粹的数学题目,因为即使你不会写代码,要是狠狠的算一波还是能算出来的没有一点毛病。

        很简单,直接梭哈了我。

  1. 通过new BigInteger("20")创建了一个BigInteger的实例bigInteger20,它的数值是20。

  2. bigInteger20.pow(22)对bigInteger20进行了22次幂计算,并将结果赋值给binInteger2022。也就是求20的22次方。

  3. 通过new BigInteger("7")创建了一个实例bigInteger7,数值为7。

  4. binInteger2.mod(bigInteger7)计算了binInteger2022除以7的余数,并将结果赋值给res。也就是求20的22次方除以7的余数。

  5. res.intValue()将BigInteger类型的res转换为对应的int类型数值,并赋值给b。

  6. 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常用方法

  1. add(BigInteger val): 返回用这个大整数和val之的一个BigInteger。

  2. subtract(BigInteger val): 返回用这个大整数和val之的一个BigInteger。

  3. multiply(BigInteger val): 返回用这个大整数和val之乘积的一个BigInteger。

  4. divide(BigInteger val): 返回用这个大整数和val之的一个BigInteger。

  5. mod(BigInteger val): 返回用这个大整数除以val的余数的一个BigInteger。

  6. pow(int exponent): 返回这个大整数的exponent次方的BigInteger。

  7. gcd(BigInteger val): 返回this和val的最大公约数的BigInteger。

  8. abs(): 返回相应的数值的绝对值的一个BigInteger。

  9. negate(): 返回相应数值的负数的一个BigInteger。

  10. intValue(): 将此BigInteger转换为int。

  11. longValue(): 将此BigInteger转换为long。

  12. floatValue(): 将此BigInteger转换为float。

  13. doubleValue(): 将此BigInteger转换为double。


BigDecimal常用方法

  1. add(BigDecimal augend): 返回一个其值为 (this + augend)加 的 BigDecimal。

  2. subtract(BigDecimal subtrahend): 返回一个其值为 (this - subtrahend)减 的 BigDecimal。

  3. multiply(BigDecimal multiplicand): 返回一个其值为 (this × multiplicand)乘 的 BigDecimal。

  4. divide(BigDecimal divisor): 返回一个其值为 (this / divisor)除的 BigDecimal,后者的尺度为: (this.scale() - divisor.scale()),如果无法得到精确的商(即,因为它有一个无限十进制扩展),则抛出 ArithmeticException。

  5. 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

  6. compareTo(BigDecimal val): 将此 BigDecimal 与指定的 BigDecimal 比较两个 BigDecimal 在数值上的大小。

  7. equals(Object x): 将此 BigDecimal 与指定的 Object 比较。当且仅当指定的 Object 是一个 BigDecimal 的数字对象,其尺度和精度上的4个值是等的时,返回 true 。

  8. intValue(): 将此 BigDecimal 转换成int

  9. longValue(): 将此 BigDecimal 转换成long

  10. doubleValue(): 将此 BigDecimal 转换成double

  11. floatValue(): 将此 BigDecimal 转换成float

 


总结

        直接结束,我只能说今晚的蓝桥云课并不太平。

  • 33
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WenJGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值