蓝桥杯专题-真题版含答案-【马虎的算式】【振兴中华】【黄金连分数】【打印十字图】

news2024/11/26 12:43:49
  • 点击跳转专栏=>Unity3D特效百例
  • 点击跳转专栏=>案例项目实战源码
  • 点击跳转专栏=>游戏脚本-辅助自动化
  • 点击跳转专栏=>Android控件全解手册
  • 点击跳转专栏=>Scratch编程案例
  • 点击跳转=>软考全系列
  • 点击跳转=>蓝桥系列

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单

芝麻粒儿-空名先生

👉实践过程

需要所有整理的文档可底部卡片联系我,直接发压缩包。

😜马虎的算式

标题: 马虎的算式
小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
有一次,老师出的题目是:36 x 495 = ?
他却给抄成了:396 x 45 = ?
但结果却很戏剧性,他的答案竟然是对的!!
因为 36 * 495 = 396 * 45 = 17820
类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54
假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)
能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?
请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。
满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。
答案直接通过浏览器提交。
注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。

//java
public class _02马虎的算式_枚举 {
  public static void main(String[] args) {
    int ans=0;
    for (int a = 1; a < 10; a++) {
      for (int b = 1; b < 10; b++) {
        if (a != b) for (int c = 1; c < 10; c++) {
          if (c != a && c != b) for (int d = 1; d < 10; d++) {
            if (d != a && d != b && d != c) for (int e = 1; e < 10; e++) {
              if (e != a && e != b && e != c && e != d) {
                if ((a*10+b)*(c*100+d*10+e)==(a*100+d*10+b)*(c*10+e)){
                  ans++;
                  System.out.printf("(%d*10+%d)*(%d*100+%d*10+%d)==(%d*100+%d*10+%d)*(%d*10+%d)==%d\n",a,b,c,d,e,a,d,b,c,e,(a*100+d*10+b)*(c*10+e));
                }
              }
            }
          }
        }
      }
    }
    System.out.println(ans);
  }
}
//c++
#include <iostream>

using namespace std;

int main(int argc, const char *argv[]) {
    int ans=0;
    for (int a = 1; a < 10; ++a) {
        for (int b = 1; b < 10; ++b) {
            if (b != a)
                for (int c = 1; c < 10; ++c) {
                    if (c != a && c != b)
                        for (int d = 1; d < 10; ++d) {
                            if (d != a && d != b && d != c)
                                for (int e = 1; e < 10; ++e) {
                                    if (e != a && e != b && e != c && e != d) {
//                                        ab * cde = adb * ce
                                        if ((a*10+b)*(c*100+d*10+e)==(a*100+d*10+b)*(c*10+e)) {
                                           printf ("(%d*10+%d)*(%d*100+%d*10+%d)==(%d*100+%d*10+%d)*(%d*10+%d)==%d\n",a,b,c,d,e,a,d,b,c,e,(a*10+b)*(c*100+d*10+e));
                                            ans++;
                                        }
                                    }

                                }

                        }
                }
        }
    }
    printf("%d",ans);
    return 0;
}

😜振兴中华

标题: 振兴中华
小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
地上画着一些格子,每个格子里写一个字,如下所示:(也可参见图)
在这里插入图片描述

从我做起振
我做起振兴
做起振兴中
起振兴中华
比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。
要求跳过的路线刚好构成“从我做起振兴中华”这句话。
请你帮助小明算一算他一共有多少种可能的跳跃路线呢?

答案是一个整数,请通过浏览器直接提交该数字。
注意:不要提交解答过程,或其它辅助说明类的内容。

//c++
#include <iostream>

using namespace std;

int f(int x, int y) {
    if (x == 3 || y == 4)return 1;
    return f(x + 1, y) + f(x, y + 1);
}

int main(int argc, const char *argv[]) {
    cout << f(0, 0) << endl;
    return 0;
}
//java
public class _03振兴中华 {
  public static void main(String[] args) {
    //  重复
    //  变化
    //  边界
    int ans = f(0, 0);
    System.out.println(ans);
  }

  private static int f(int i, int j) {
    if (i == 3 || j == 4) return 1;
    return f(i + 1, j) + f(i, j + 1);//将两种走法的路线数相加
  }
}

😜黄金连分数

标题: 黄金连分数
黄金分割数0.61803… 是个无理数,这个常数十分重要,在许多工程问题中会出现。有时需要把这个数字求得很精确。
对于某些精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次升空后就发现了一处人工加工错误,对那样一个庞然大物,
其实只是镜面加工时有比头发丝还细许多倍的一处错误而已,却使它成了“近视眼”!!
言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法。
比较简单的一种是用连分数:

			  1
黄金数 = ---------------------
				  1
	   1 + -----------------
					1
		   1 + -------------
					  1
			   1 + ---------
					  1 + ...

这个连分数计算的“层数”越多,它的值越接近黄金分割数。
请你利用这一特性,求出黄金分割数的足够精确值,要求四舍五入到小数点后100位。

小数点后3位的值为:0.618
小数点后4位的值为:0.6180
小数点后5位的值为:0.61803
小数点后7位的值为:0.6180340
(注意尾部的0,不能忽略)

你的任务是:写出精确到小数点后100位精度的黄金分割值。

注意:尾数的四舍五入! 尾数是0也要保留!

显然答案是一个小数,其小数点后有100位数字,请通过浏览器直接提交该数字。

//1.化为求斐波那契相邻两项的比值,到多少项?越多越精确,n/n+1项,n再往上增加,这个比值的小数点后101位是稳定的,也就是不变的
//2.double无法表示100位小数,BigInteger和BigDecimal
//java
public class _04黄金连分数 {
  public static void main(String[] args) {
    BigInteger a=BigInteger.ONE;
    BigInteger b=BigInteger.ONE;
    //斐波那契数列的迭代形式
    for (int i = 3; i < 500; i++) {
      BigInteger t=b;
      b=a.add(b);//大整数的加法
      a=t;
    }
    //大浮点数的除法
    BigDecimal divide = new BigDecimal(a,110).divide(new BigDecimal(b,110), BigDecimal.ROUND_HALF_DOWN);
    //截取字符串
    System.out.println(divide.toPlainString().substring(0,103));

  }
}
/*1、转为求斐波那契数列的n和n+1项
 * 2、n取多少?再增加n,小数点后的101位没有变化
 * 3、不能用c语言定义的整数型直接运算,而要手工地写大数加法和除法(减法)*/
//c++
#include <string>
#include <iostream>
#include <sstream>
#include <algorithm>

using namespace std;

int n = 400;

void i2s(int num, string &str) {
    stringstream ss;
    ss << num;
    ss >> str;
}

string add(string a, string b) {
    a = a.substr(a.find_first_not_of('0'));
    b = b.substr(b.find_first_not_of('0'));
    long long lenA = a.length();
    long long lenB = b.length();
    long long len = max(lenA, lenB) + 10;
//翻转,便于从低位逐步求和
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());

    string ans(len, '0');//初始化答案为len长,全部为字符0
//    把a拷贝到ans中
    for (int i = 0; i < lenA; ++i) {
        ans[i] = a[i];
    }
    int tmp = 0;//tmp是上一位相加后的进位
    for (int i = 0; i < len; ++i) {
        if (i < b.length())
            tmp += (ans[i] - '0') + (b[i] - '0');//假设为18
        else
            tmp += (ans[i] - '0');
        ans[i] = tmp % 10 + '0';//8 8+'0'
        tmp /= 10;//1
    }
    reverse(ans.begin(), ans.end());
    return ans.substr(ans.find_first_not_of('0'));
}

int cmp(string a, string b) {
    unsigned long i1 = a.find_first_not_of('0');
    if (i1 == string::npos)a = '0';
    else a.substr(i1);

    unsigned long i2 = b.find_first_not_of('0');
    if (i2 == string::npos)b = '0';
    else b.substr(i2);

    if (a.length() > b.length())return 1;
    else if (a.length() < b.length())return -1;
    else {//长度相等
        if (a < b)return -1;
        if (a > b)return 1;
        else return 0;
    }
}

//此处,a一定大于等于b
string subtract(string a, string b) {
//    完整的减法里面,a可以小于b,这时结果为负数,交换ab进行下面的代码
//    1.翻转
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());
//    2.按位做减法
    for (int i = 0; i < b.length(); ++i) {
        if (a[i] >= b[i]) {
            a[i] = a[i] - b[i] + '0';
        } else {//就要借
            int k = 1;
            while (a[i + k] == '0') {
                a[i + k] = '9';
                k++;
            }
//            这里可以保证i+k这一位上不是0
            a[i + k] = a[i + k] - '1' + '0';

            a[i] = (a[i] - '0' + 10) - (b[i] - '0') + '0';
        }
    }

    reverse(a.begin(), a.end());
    if (a.find_first_not_of('0') == string::npos)return "0";
    return a.substr(a.find_first_not_of('0'));
}

/*转换成减法*/
string divide(string a, string b) {
//    只考虑a<b的情况
    string ans = "0.";
//    转化成减法
    for (int i = 0; i < 101; ++i) {//101次
        a.append("0");
        int t = 0;
        while (cmp(a, b) >= 0) {//a>=b
            a = subtract(a, b);//不停地做减法
            t++;//记录减法做了多少次
        }
        string t_str;
        i2s(t, t_str);
        ans.append(t_str);
    }
    return ans;
}

int main(int argc, const char *argv[]) {
    string a = "1";
    string b = "1";
    cout << subtract(a, b) << endl;
    for (int i = 3; i <= n; ++i) {
        string tmp = b;
        b = add(a, b);
        a = tmp;
//        cout << b << " " << endl;
    }
//    a b是斐波那契的n-1和n项
    string ans = divide(a, b);
    cout << ans << endl;
    cout << ans.length()-2 << endl;
    return 0;
}

😜打印十字图

题目标题:打印十字图
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg)

				 $$$$$$$$$$$$$
				 $           $
			   $$$ $$$$$$$$$ $$$
			   $   $       $   $
			   $ $$$ $$$$$ $$$ $
			   $ $   $   $   $ $
			   $ $ $$$ $ $$$ $ $
			   $ $ $   $   $ $ $
			   $ $ $ $$$$$ $ $ $
			   $ $ $   $   $ $ $
			   $ $ $$$ $ $$$ $ $
			   $ $   $   $   $ $
			   $ $$$ $$$$$ $$$ $
			   $   $       $   $
			   $$$ $$$$$$$$$ $$$
				 $           $
				 $$$$$$$$$$$$$

对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。
输入格式:
一个正整数 n (n<30) 表示要求打印图形的层数

输出:
对应包围层数的该标志。

//c++
#include <iostream>

using namespace std;

char arr[9 + 4 * 28][9 + 4 * 28];
int N,L=0,R;

void printAll(int l, int r) {
    for (int i = l; i <= r; ++i) {
        for (int j = l; j <= r; ++j) {
            if (arr[i][j] != '$')arr[i][j] = '.';
            cout << arr[i][j];
        }
        cout << endl;
    }
}

void dealN(int n) {
    int l = 2 * (N - n), r = R-l;//可以取到最大最小小标

//    处理第一行和最后一行
    for (int i = l + 2; i <= r - 2; ++i) {
        arr[l][i] = '$';
        arr[r][i] = '$';
    }
//    处理第二行和倒数第二行
    arr[l + 1][l + 2] = '$';
    arr[l + 1][r - 2] = '$';
    arr[r - 1][l + 2] = '$';
    arr[r - 1][r - 2] = '$';
//    处理第三行和倒数第三行
    arr[l+2][l+0] = '$';
    arr[l+2][l+1] = '$';
    arr[l+2][l+2] = '$';
    arr[l+2][r] = '$';
    arr[l+2][r - 1] = '$';
    arr[l+2][r - 2] = '$';
    arr[r - 2][l+0] = '$';
    arr[r - 2][l+1] = '$';
    arr[r - 2][l+2] = '$';
    arr[r - 2][r] = '$';
    arr[r - 2][r - 1] = '$';
    arr[r - 2][r - 2] = '$';

//    处理两边
    for (int j = l+3; j <= r - 3; ++j) {
        arr[j][l] = '$';
        arr[j][r] = '$';
    }
}

int main(int argc, const char *argv[]) {
    scanf("%d", &N);
    R=9 + 4 * (N - 1) - 1;
    for (int i = N; i >=1 ; --i) {
        dealN(i);

    }
//    十字的行列
    for (int j = 2*N; j <2*N+5 ; ++j) {
        arr[2*N+3-1][j]='$';
        arr[j][2*N+2]='$';
    }
//    十字的列
//    for (int j = 2*N; j <2*N+5 ; ++j) {
//    }
    printAll(0, 9 + 4 * (N - 1)-1);
    return 0;
}
//java
public class _08打印十字图 {

  static int N, L = 0, R;
  static char[][] arr;

  static void deal(int n) {
    //n=3,总宽17,最大下标16
    int l,r;
    l= (N-n)*2;//最小下标
    r=l+9+4*(n-1)-1;//最大下标
    for (int i = l+2; i <= r-2; i++) {
      arr[l][i] = '$';
      arr[r][i] = '$';
    }

    arr[l+1][l+2] = '$';
    arr[l+1][r-2] = '$';
    arr[r-1][l+2] = '$';
    arr[r-1][r-2] = '$';

    for (int i = l; i < l+3; i++) {
      arr[l+2][i] = '$';
      arr[r - 2][i] = '$';

    }
    for (int i = r; i >r-3 ; i--) {
      arr[l+2][i] = '$';
      arr[r - 2][i] = '$';
    }

    for (int i = l+3; i <= r-3; i++) {
      arr[i][l] = '$';
      arr[i][r] = '$';
    }
  }

  static void printAll() {
    for (int i = 0; i <= R; i++) {
      for (int j = 0; j <= R; j++) {
        if (arr[i][j] != '$') arr[i][j] = '.';
        System.out.print(arr[i][j]);
      }
      System.out.println();
    }
  }

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    N = sc.nextInt();
    R = 9 + 4 * (N - 1) - 1;//最大下标
    arr = new char[R+1][R+1];
    for (int i = N; i >=1 ; i--) {
      deal(i);
    }
    int c_i=2*N+2;
    int c_j=2*N+2;
    arr[c_i][c_j]='$';
    for (int i = c_i-2; i < c_i+3; i++) {
      arr[c_i][i]='$';
    }
    for (int i = c_i-2; i < c_i+3; i++) {
      arr[i][c_j]='$';
    }
    printAll();
  }

}

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/718577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day27-MySQL拓展

0目录 第六章 MySQL拓展 1.MySQL拓展 1.1 事务定义&#xff1a;事务就是将一组SQL语句放在同一批次内去执行&#xff0c;如果一个SQL语句出错&#xff0c;则该批次内的所有sql都将被取消执行。 1.2 事务ACID原则 (1)原子性 一个事务要么全部提交成功&#xff0c;要么全部…

「深度学习之优化算法」(九)群搜索算法

1. 群搜索算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   群搜索算法(Group Search Optimizer)是一种基于发现者,跟随者,游荡者模型而产生的算法。算法模型较为复杂,提出时间也不长,对于其的深度研究相对较少,但也有一定的应用研究。   在群搜索算法…

【雕爷学编程】Arduino动手做(150)---旋转角度传感器模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

【IDE 小程序】小程序控制台 不打印 console.log问题

小程序控制台 不打印 console.log问题 全局搜索compress.drop_console&#xff08;一般在config文件中&#xff09;&#xff0c;设置为false&#xff0c;再重新打开小程序即可

4、架构:Canvas VS DOM

在可视化搭建的低代码平台中&#xff0c;设计器是一个非常关键的模块&#xff0c;可以帮助用户通过拖拽、配置等方式快速搭建应用界面。 在技术选型方面&#xff0c;目前市面上主流的设计器技术包括基于 HTML/CSS/JavaScript 的 Web 设计器。 在渲染方案方面&#xff0c;主流…

TiDB(6):数据迁移-TiDB Lightning

1 TiDB Lightning介绍 TiDB Lightning 是一个将全量数据高速导入到 TiDB 集群的工具&#xff0c;目前支持 Mydumper 或 CSV 输出格式的数据源。你可以在以下两种场景下使用 Lightning&#xff1a; 迅速导入大量新数据。 备份恢复所有数据。 TiDB Lightning 主要包含两个部分…

NSS [SWPUCTF 2021 新生赛]jicao

NSS [SWPUCTF 2021 新生赛]jicao 先看题目&#xff0c;要求我们post传参一个id。然后get一个变量叫json&#xff0c;并且通过json_decode()对一串JSON进行解码 payload&#xff1a; GET&#xff1a; ?json{"x":"wllm"} POST&#xff1a;idwllmNB

java中处理异常规范

java处理异常规范 文章目录 java处理异常规范一、尽量不要使用e.printStackTrace(),而是使用log打印,并记录exception二、不要用一个Exception捕捉所有可能的异常三、使用finally关闭流资源或者直接使用try-with-resource四、捕获异常与抛出异常必须是完全匹配&#xff0c;或者…

Spring Boot 中的 Redis 分布式锁

Spring Boot 中的 Redis 分布式锁 在分布式系统中&#xff0c;多个进程同时访问共享资源时&#xff0c;很容易出现并发问题。为了避免这些问题&#xff0c;我们可以使用分布式锁来保证共享资源的独占性。Redis 是一款非常流行的分布式缓存&#xff0c;它也提供了分布式锁的功能…

react - TS

TypeScript TypeScript 简称『TS』&#xff0c;是微软开发的一个开源的编程语言。 一、TS 特点 TS 主要有如下几个特点: 完全兼容 JavaScript&#xff0c;是 JavaScript 的超集 引入类型系统&#xff0c;可以尽早的定位错误位置, 帮助提升开发效率 let obj {a:1,b:2....}o…

四氯化硅铝的活性离子蚀刻

引言 铝膜广泛用于集成电路中的互连线。随着电路的集成规模和密度变得越来越大&#xff0c;有必要将互连线和间隔的宽度减小到几乎薄膜厚度。为了实现这一点&#xff0c;已经开发了具有定向蚀刻能力的平行平面电极型等离子体蚀刻。这被称为反应离子蚀刻&#xff0c;因为它采用…

基于免疫优化算法的物流配送中心选址规划研究(Matlab实现)

目录 1 概述 2 物流配送中心选址规划研究 3 Matlab代码 4 结果 1 概述 影响物流配送中心选址的因素有很多,精确选址优化问题亟待解决。通过充分考虑货物的配送时间,将免疫算法加入其中,介绍了物流配送选址模型的构建以及免疫算法实现的相关步骤,最后利用matlab软件进行分析,提出…

手机端三维人体建模软件-易模,为虚拟现实、游戏开发带来新体验

三维人体建模是一种高级的数字技术&#xff0c;用于将人体的形态、肌肉、骨骼等三维信息转化为数字模型。这项技术涵盖了计算机图像处理、计算机辅助设计等领域&#xff0c;具有广泛的应用价值。通过三维人体建模&#xff0c;可以更好地理解人体的结构和功能&#xff0c;对于医…

弗迪科技携手纷享销客共建CRM系统,数智化升级加速“灯塔工厂”征程

当前&#xff0c;全球新一轮科技革命正和产业升级融合发展&#xff0c;数字化技术成为各行各业升级发展的重要推动力。 自2018年起&#xff0c;世界经济论坛与麦肯锡咨询公司发起“灯塔工厂”项目&#xff0c;全球严选制造业数字化转型典范作为“数字化制造”和“全球化4.0”的…

squid代理服务应用

squid代理服务器 代理的工作机制&#xff1a; 代理服务器的概念及其作用&#xff1a; 其主要作用有&#xff1a; Squid 代理的类型&#xff1a; 安装 Squid 服务 编译安装 Squid 修改 Squid 的配置文件 Squid 的运行控制 创建 Squid 服务脚本 构建传统代理服务器 生产环境…

红黑树:变色旋转规则化抽象逻辑分析

文章目录 一.红黑树的定义红黑树平衡性论证 二.红黑树的节点插入插入新节点后最小违规子结构(抽象分析)最小违规子结构一号的规则化算法分析最小违规子结构二号的规则化算法分析 三.红黑树类代码托管四.红黑树与AVL树的对比 旷世奇才发明的数据结构 一.红黑树的定义 红黑树的节…

【C语言初阶(10)】函数练习题

文章目录 1. 判断素数2. 判断闰年3. 函数实现二分查找4. 记录函数调用次数 1. 判断素数 题目内容 写一个函数可以判断一个数是不是素数。 素数 素数也叫做质数&#xff0c;一个只能被 1 和它本身整除的数字称之为素数。 例如&#xff1a;7 这个数字只能被 1 和 它本身&#x…

赛效:怎么将PPT转为PDF

1&#xff1a;在电脑网页上打开云组件&#xff0c;点击“PPT转换”菜单里的“PPT转PDF”。 2&#xff1a;点击“选择文件”可以将本地PPT文件添加上去。 3&#xff1a;文件添加成功后&#xff0c;点击下方的“开始转换”按钮。 4&#xff1a;文件转换成功后&#xff0c;在预览页…

vue动态修改浏览器标题和logo

问题描述 需要将一个系统&#xff0c;更改一下标题、logo&#xff0c;然后部署成另一个系统&#xff0c;由于不想单独拉出一套代码&#xff08;单独拉出来后维护成本增加&#xff09;&#xff0c;所以想要动态改变系统标题和图标 解决方案 将项目制造一个入口可以修改项目的…

20230703 -- scRNAseq from gastric cancer

文章标题&#xff1a;《Single-cell atlas of lineage states, tumor microenvironment and subtypespecific expression programs in gastric cancer》 DOI: 10.1158/2159-8290.CD-21-0683 数据集组织形式快照&#xff1a; step1 利用Seurat包整合数据 #! conda env R4libra…