【蓝桥杯省赛】冲刺练习题【超大数】倒计时【14】天

简介: 【蓝桥杯省赛】冲刺练习题【超大数】倒计时【14】天

1、外星日历

某星系深处发现了文明遗迹。


他们的计数也是用十进制。

他们的文明也有日历。日历只有天数,没有年、月的概念。

有趣的是,他们也使用了类似“星期”的概念,

只不过他们的一个星期包含了9天,

为了方便,这里分别记为: A,B,C....H,I


从一些资料上看到,

他们的23日是星期E

他们的190日是星期A

他们的343251日是星期I


令人兴奋的是,他们居然也预见了“世界末日”的那天,

当然是一个很大很大的数字

651764141421415346185


请你计算一下,这遥远的一天是该文明的星期几?


你需要提交的是一个大写字母,表示该文明的星期几,

不要填写任何多余的内容。


题解:


package action;
import java.math.BigInteger;
public class demo {
  public static void main(String[] args) {
  BigInteger x =  new BigInteger("651764141421415346185");
  BigInteger y = x.mod(new BigInteger("9"));
  int z = y.intValue();
  System.out.println((char)('A'+z-1));
  }
}

2、阶乘位数

9的阶乘等于:362880

它的二进制表示为:1011000100110000000

这个数字共有19位。


请你计算,9999 的阶乘的二进制表示一共有多少位?


注意:需要提交的是一个整数,不要填写任何无关内容(比如说明解释等)


import java.math.BigInteger;
public class demo {
  public static void main(String[] args) {
  BigInteger n = new BigInteger("1");
  for(int i=1;i<=9999;i++)
    n = n.multiply(new BigInteger("0"+i));
  String s = n.toString(2); 
  System.out.println(s.length());
  }
}

3、数字游戏

历届试题 数字游戏

时间限制:1.0s 内存限制:256.0MB


问题描述

 栋栋正在和同学们玩一个数字游戏。


游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈。栋栋首先说出数字1。接下来,坐在栋栋左手边的同学要说下一个数字2。再下面的一个同学要从上一个同学说的数字往下数两个数说出来,也就是说4。下一个同学要往下数三个数,说7。依次类推。


为了使数字不至于太大,栋栋和同学们约定,当在心中数到 k-1 时,下一个数字从0开始数。例如,当k=13时,栋栋和同学们报出的前几个数依次为:

 1, 2, 4, 7, 11, 3, 9, 3, 11, 7。


游戏进行了一会儿,栋栋想知道,到目前为止,他所有说出的数字的总和是多少。

输入格式

 输入的第一行包含三个整数 n,k,T,其中 n 和 k 的意义如上面所述,T 表示到目前为止栋栋一共说出的数字个数。

输出格式

 输出一行,包含一个整数,表示栋栋说出所有数的和。

样例输入

3 13 3

样例输出

17

样例说明

 栋栋说出的数依次为1, 7, 9,和为17。

数据规模和约定

 1 < n,k,T < 1,000,000;


这道题直接用等差数列求和算出来下一个数字是多少然后加起来即可。


import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
  BigInteger n,t,k;
  Scanner sc=new Scanner(System.in);
  n=sc.nextBigInteger();
  k=sc.nextBigInteger();
  t=sc.nextBigInteger();
  BigInteger sum=BigInteger.valueOf(0),now=BigInteger.valueOf(1),pre=BigInteger.valueOf(0);
  while(t.compareTo(BigInteger.valueOf(0))!=0) {
    now=now.mod(k);
    sum=sum.add(now);
    pre=pre.add(BigInteger.valueOf(1));
    now=now.add(pre.multiply(n).add((n.multiply(n.subtract(BigInteger.valueOf(1))).divide(BigInteger.valueOf(2)))));
    pre=pre.add(n.subtract(BigInteger.valueOf(1)));
    t=t.subtract(BigInteger.valueOf(1));
  }
  System.out.println(sum);
  }
}


4、棋盘放麦子

你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 11 个棋盘格放 11 粒麦子,在第 22 个棋盘格放 22 粒麦子,在第 33 个棋盘格放 44 粒麦子,在第 44 个棋盘格放 88 粒麦子,…后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有 6464 格)。


国王以为他只是想要一袋麦子而已,哈哈大笑。


当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!


请你借助计算机准确地计算,到底需要多少粒麦子。

import java.math.BigInteger;
public class demo {
    public static void main (String[] arge) {
        BigInteger a =new BigInteger("0");
        BigInteger b = new BigInteger("2");
        for (int i = 0; i < 64; i++) {
            a = a.add(b.pow(i));
        }
        System.out.println(a);
    }
}

5、四平方和

四平方和定理,又称为拉格朗日定理:


每个正整数都可以表示为至多 4 个正整数的平方和。


如果把 0 包括进去,就正好可以表示为 4 个数的平方和。


比如:


5 = 0^2 + 0^2 + 1^2 + 2^25=02+02+12+22;


7 = 1^2 + 1^2 + 1^2 + 2^27=12+12+12+22;


对于一个给定的正整数,可能存在多种平方和的表示法。


要求你对 4 个数排序:


0 \leq a \leq b \leq c \leq d0≤a≤b≤c≤d


并对所有的可能表示法按 a,b,c,da,b,c,d 为联合主键升序排列,最后输出第一个表示法。


输入描述

程序输入为一个正整数 N (N<5 \times 10^6)N(N<5×106)。


输出描述

要求输出 4 个非负整数,按从小到大排序,中间用空格分开


输入输出样例

12

输出样例


0 2 2 2

运行限制

最大运行时间:3s

最大运行内存: 256M

6、乘积尾零

描述如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零?


5650 4542 3554 473 946 4114 3871 9073 90 4329

2758 7949 6113 5659 5245 7432 3051 4434 6704 3594

9937 1173 6866 3397 4759 7557 3070 2287 1453 9899

1486 5722 3135 1170 4014 5510 5120 729 2880 9019

2049 698 4582 4346 4427 646 9742 7340 1230 7683

5693 7015 6887 7381 4172 4341 2909 2027 7355 5649

6701 6645 1671 5978 2704 9926 295 3125 3878 6785

2066 4247 4800 1578 6652 4616 1113 6205 3264 2915

3966 5291 2904 1285 2193 1428 2265 8730 9436 7074

689 5510 8243 6114 337 4096 8199 7313 3685 211

题解:


public class demo {
    public static void main(String[] args) {
        BigInteger sum =new BigInteger("1");
        Scanner scanner=new Scanner(System.in);
        int n=10;
        while (n-->0){
            String str=scanner.nextLine();
            String str1[]=str.split(" ");
            for (int i = 0; i<10 ; i++) {
                BigInteger big=new BigInteger(str1[i]);
                    sum=sum.multiply(big);
            }
            System.out.println(sum);
        }
    }
}

附加:黄金分割

黄金分割数0.618与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618处,

墙上的画像一般也挂在房间高度的0.618处,甚至股票的波动据说也能找到0.618的影子....

黄金分割数是个无理数,也就是无法表示为两个整数的比值。

0.618只是它的近似值,其真值可以通过对5开方减去1再除以2来获得,

我们取它的一个较精确的近似值:0.618034

有趣的是,一些简单的数列中也会包含这个无理数,这很令数学家震惊!

1 3 4 7 11 18 29 47 .... 称为“鲁卡斯队列”。它后面的每一个项都是前边两项的和。

如果观察前后两项的比值,即:1/3,3/4,4/7,7/11,11/18 ... 会发现它越来越接近于黄金分割数!

你的任务就是计算出从哪一项开始,这个比值四舍五入后已经达到了与0.618034一致的精度。

请写出该比值。格式是:分子/分母。比如:29/47


import java.math.BigDecimal;
public class demo {
  public static double format(double d) {
  BigDecimal bd = new BigDecimal(d).setScale(6, BigDecimal.ROUND_HALF_UP);
  double dd = bd.doubleValue();//返回浮点数值
  return dd;
  }
  public static void f(int a, int b) {
  double d = format((double) a / b);
  if (d == 0.618034) {
    System.out.println(a + "/" + b + "=" + d);
    return;
  }
  f(b, a + b);
  }
  public static void main(String[] args) {
  f(1, 3);
  }
}

总结:

其实大数处理的题都不是很难,掌握四则运算加上小数点处理就行。


相关文章
|
数据可视化 数据挖掘
【数据分析与可视化】对图像进行SVD分解并重构图像实战(附源码)
【数据分析与可视化】对图像进行SVD分解并重构图像实战(附源码)
462 0
|
4月前
|
数据采集 Web App开发 自然语言处理
利用Python构建今日头条搜索结果的可视化图表
利用Python构建今日头条搜索结果的可视化图表
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
[大语言模型-论文精读] ACL2024-长尾知识在检索增强型大型语言模型中的作用
[大语言模型-论文精读] ACL2024-长尾知识在检索增强型大型语言模型中的作用
302 0
|
机器学习/深度学习 算法 数据挖掘
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
275 4
8个常见的机器学习算法的计算复杂度总结
|
数据可视化
【Eviews实战】——多元线性回归模型的建立(一)
【Eviews实战】——多元线性回归模型的建立(一)
|
NoSQL 数据可视化 Redis
redis在window环境下的安装教程
redis在window环境下的安装教程
215 0
|
人工智能 算法 搜索推荐
第15年双11,技术创新开启 AI 淘宝新起点
第15年双11,技术创新开启 AI 淘宝新起点
440 0
|
SQL 关系型数据库 MySQL
MySQL基础练习题(含详细答案)
MySQL基础练习题(含详细答案)
961 1
|
存储 分布式计算 算法
面试题:海量数据去重、Top-k、BitMap问题整理
首先直接进入正题,40亿QQ号如何设计算法去重,相同的QQ号码仅保留一个,内存限制为1个G。 (腾讯的QQ号都是4字节正整数,所以QQ号码的个数是43亿左右,理论值2^32-1个,又因为是无符号的,翻倍了一下,所以43亿左右)
面试题:海量数据去重、Top-k、BitMap问题整理
|
消息中间件 存储 RocketMQ
再谈 RocketMQ broker busy(实战篇)
再谈 RocketMQ broker busy(实战篇)
再谈 RocketMQ broker busy(实战篇)