蓝桥杯笔记

一个大菜逼准备c组蓝桥杯的第一轮(前三道基础题记录)

	由于自己太菜,所以先从各届蓝桥杯java C组前三题做起,(以后该文章可作为复习笔记使用,仅对我自己!)

第六届1.隔行变色

	题目:Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式.小明设计的样
	式为:第1行蓝色,第2行白色,第3行蓝色,第4行白色,....现在小明想知道,从第21行到第50行一共包含了
	多少个蓝色的行请你直接提交这个整数,千万不要填写任何多余的内容.  
	
	**答案:**

思路:基本的高中数学问题

第六届2.立方尾不变

	题目:有些数字的立方的末尾正好是该数字本身.比如: 1,4,5,6,9,24,25,...请你计算一下,在10000以内
	的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个.请提交该整数,不要填写
	任何多余的内容.请你直接提交这个整数,千万不要填写任何多余的内容.
	
	**答案:36**

思路:

import java.lang.Math;
public class Test18 {
	public static int flag = 0;
	public static void main(String[] args) {
		long i = 1;
		long judge;
		long num;
		while (i <= 10000 ) {
			num = i;
			judge = (long) Math.pow (i,3);
			if (i < 10 && judge % 10 == i) 
				flag++;
			else if (i < 100 && judge%100 == i) 
				flag++;
			else if (i < 1000 && judge % 1000 == i)
				flag++;
			else if (i <= 10000 && judge % 10000 == i)
				flag++;
			i++;
		}
		System.out.print(flag);
	}
}

第六届3.无穷分数

	题目:无穷的分数,有时会趋向于固定的数字.请计算【图1.jpg】所示的无穷分数,要求四舍五入,精确到小数点
	后5位,小数位不足的补0.请填写该浮点数,不能填写任何多余的内容.
	
	**答案:58198**

在这里插入图片描述
思路:把分数写成除法形式(只写前几项),结果显然易见

#include <iostream>
#include <iomanip> 
using namespace std;

double return1(double x);

int main (){
	
	double res;
	res = return1(1);
	cout << setprecision(5)<< res ;

	return 0; 
}
// 这个递归的基线条件想了很久都没想出来 最后看了CSDN里的以为大佬的答案恍然大悟
	double return1(double x) {
		if (n >= 100) {
			return x;
		}
		else {
			return x/(x+return1(x+1));	
		}
	}

第七届1.有奖猜谜

	题目:小明很喜欢猜谜语.最近,他被邀请参加了X星球的猜谜活动.每位选手开始的时候都被发给777个电
	子币.规则是:猜对了,手里的电子币数目翻倍,猜错了,扣除555个电子币,扣完为止.小明一共猜了15条谜
	语.战果为: vxvxvxvxvxvxvvx其中v表示猜对了,x表示猜错了.请你计算一下,小明最后手里的电子币数目
	是多少.

	**答案:58497**

思路:最简单的加减乘除

#include <iostream>
using namespace std;

//vxvxvxvxvxvxvvx

int main (){
	
	int res,star = 777;
	int v = 2 ; // win;
	int x = 555;  // fail
	
	res = star * v - x;
	res = res * v - x;
	res = res * v - x;
	res = res * v - x;
	res = res * v - x;
	res = res * v - x;
	res = res * v * v - x;
	cout << res ;
	
	return 0;
}

第七届2.煤球数目

	题目:有一堆煤球,堆成三角棱锥形.具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成
	三角形),第四层10个(排列成三角形) ... ....如果一共有100层,共有多少个煤球?请填表示煤球总数目
	的数字.注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字.

	**答案:171700**

思路:递归数列

#include <iostream>
#include <stdio.h>
using namespace std;
/*
one 1
		2
two 3  
		3
three 6
		4
fore 10
		5
five 15

.......
		n
*/
int findnum (int x);
		
int main (){	
	//res 为结果
	int res = 0; 
	for (int i = 1; i <= 100; i ++){
		res = res + findnum(i);	
	}
	cout << res ;
	return 0;
}
//寻找第x个数 
int findnum (int x){
	if (x == 1){
		return x;
	}
	else {
		return findnum (x-1)+x;
	}
}

第七届3.平方怪圈

	题目:如果把一个正整数的每一位都平方后再求和,得到一个新的正整数.对新产生的正整数再
	做同样的处理.如此一来,你会发现,不管开始取的是什么数字,最终如果不是落入1,就是落
	入同一个循环圈.请写出这个循环圈中最大的那个数字.请填写该最大数字.注意:你提交的应该
	是一个整数,不要填写任何多余的内容或说明性文字.

	**答案:145**

*思路:*重点是把正整数拆分,即23-27行

#include <iostream>
#include <stdio.h>

using namespace std;
/*如果把一个正整数的每一位都平方后再求和,得到一个新的正整数.对新产生的正整数再
		做同样的处理.如此一来,你会发现,不管开始取的是什么数字,最终如果不是落入1,就是落
		入同一个循环圈.请写出这个循环圈中最大的那个数字.请填写该最大数字.注意:你提交的应该
		是一个整数,不要填写任何多余的内容或说明性文字.*/
void fornum (int x);

int main (){
	
	fornum(2);
	
	return  0;
}

void fornum (int x){
	int num ;
	int sum = 0;	
		for (int i = 0; i < 99; i++){	
		//找到正整数的每一位然后平方相加 
			while (x != 0){	
				num = x % 10;
				sum = sum+num*num;
				x = x/10;		
		}
			cout << sum << " " ;
			x = sum;
			sum = 0;
	}
}

第八届1.购物清单

	题目:小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候
	经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。这不,XX大促销
	又来了!老板夫人开出了长长的购物单,都是有打折优惠的。小明也有个怪癖,
	不到万不得已,从不刷卡,直接现金搞定。现在小明很心烦,请你帮他计算一下,
	需要从取款机上取多少现金,才能搞定这次购物。取款机只能提供100元面额的
	纸币。小明想尽可能少取些现金,够用就行了。你的任务是计算出,小明最少需
	要取多少现金。以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。
-----------------
****     180.90       88折
****      10.25       65折
****      56.14        9折
****     104.65        9折
****     100.30       88折
****     297.15        半价
****      26.75       65折
****     130.62        半价
****     240.28       58折
****     270.62        8折
****     115.87       88折
****     247.34       95折
****      73.21        9折
****     101.00        半价
****      79.54        半价
****     278.44        7折
****     199.26        半价
****      12.97        9折
****     166.30       78折
****     125.50       58折
****      84.98        9折
****     113.35       68折
****     166.57        半价
****      42.56        9折
****      81.90       95折
****     131.78        8折
****     255.89       78折
****     109.17        9折
****     146.69       68折
****     139.33       65折
****     141.16       78折
****     154.74        8折
****      59.42        8折
****      85.44       68折
****     293.70       88折
****     261.79       65折
****      11.30       88折
****     268.27       58折
****     128.29       88折
****     251.03        8折
****     208.39       75折
****     128.88       75折
****      62.06        9折
****     225.87       75折
****      12.89       75折
****      34.28       75折
****      62.16       58折
****     129.12        半价
****     218.37        半价
****     289.69        8折
--------------------
需要说明的是,88折指的是按标价的88%计算,而8折是按80%计算,余者类推。特别
地,半价是按50%计算。请提交小明要从取款机上提取的金额,单位是元。答案是一
个整数,类似4300的样子,结尾必然是00,不要写任何多余的内容。特别提醒:不许
携带计算器入场,也不能打开手机

答案:5200

思路:没想到如何用代码简单计算,所以用的excel

  1. 比赛时,题目是以文件夹+文本文件形式发放,因此可直接用excel导入
    在这里插入图片描述
  2. 导入后对数据进行处理如:将“折”删除,把“5折”变为“50”等
  3. 用函数对单元格进行计算
    在这里插入图片描述
  4. 然后自动求和
    在这里插入图片描述

第八届2.纸牌三角形

	题目:A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求
	每个边的和相等。下图就是一种排法(如有对齐问题,参看p1.png)。

 		 A
	    9 6
       4   8
      3 7 5 2

这样的排法可能会有很多。如果考虑旋转、镜像后相同的算同一种,一共有多少种不
同的排法呢?请你计算并提交该数字。 注意:需要提交的是一个整数,不要提交任
何多余内容。

思路:全排列

import java.util.Arrays;
import java.util.ArrayList;
public class Main {

	static int count = 0;    //用于计数
	public static void main(String[] args) {
		int num[] = {1,2,3,4,5,6,7,8,9};
		int res = per (num,0);
		System.out.print(res/6); //旋转有三条边 因此/3 镜像两种情况 因此/2
	}
	
	public static int per (int[] num,int i) {
		int a = num[0]+num[1]+num[2]+num[3];
		int b = num[3]+num[4]+num[5]+num[6];
		int c = num[6]+num[7]+num[8]+num[0];
		if (i == 9&& a == b && a == c) {
			count++;
		}
		
		else {
			for (int j = i; j < num.length; j++ ) {
				swap (num,i,j);
				per (num,i+1); // 进入下一层
				swap (num,i,j);  // 回溯
			}
		}
		return count;
	}
	
	public static void swap (int[] num,int m,int n) {
		int temp = num[m];
		num[m] = num[n];
		num[n] = temp;
	}
}

第八届3.承压计算

题目:X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。每块金属原料的外形、尺寸
完全一致,但重量不同。金属材料被严格地堆放成金字塔形。


                         7 
                        5 8 
                       7 8 8 
                      9 2 7 2 
                     8 1 4 9 1 
                    8 1 8 8 4 1 
                   7 9 6 1 4 5 4 
                  5 6 5 5 6 9 5 6 
                 5 5 4 7 9 3 5 5 1 
                7 5 7 9 7 4 7 3 3 1 
               4 6 4 5 5 8 8 3 2 4 3 
              1 1 3 3 1 6 6 5 5 4 4 2 
             9 9 9 2 1 9 1 9 2 9 5 7 9 
            4 3 3 7 7 9 3 6 1 3 8 8 3 7 
           3 6 8 1 5 3 9 5 8 3 8 1 8 3 3 
          8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9 
         8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4 
        2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9 
       7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6 
      9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3 
     5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9 
    6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4 
   2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4 
  7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6 
 1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3 
2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8 
7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9 
7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6 
5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1 
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X 


其中的数字代表金属块的重量(计量单位较大)。最下一层的X代表30台极高精度的电子秤。


假设每块原料的重量都十分精确地平均落在下方的两个金属块上,
最后,所有的金属块的重量都严格精确地平分落在最底层的电子秤上。
电子秤的计量单位很小,所以显示的数字很大。
工作人员发现,其中读数最小的电子秤的示数为:2086458231
请你推算出:读数最大的电子秤的示数为多少?
注意:需要提交的是一个整数,不要填写任何多余的内容。

思路:在草稿纸手写递推公式

  public static void main(String[] args) {
 
        int i,j;  
        double max=0,min=99999999;  
        for(i=1;i<30;i++)  
            for(j=0;j<=i;j++)  
            {  
                if(j==0)  
                    a[i][j]+=a[i-1][0]/2.0; 
                
                else if(j==i){
                a[i][j] += a[i-1][j-1]/2.0;}  
                else  
                {  
                    a[i][j]+=a[i-1][j-1]/2.0+a[i-1][j]/2.0;  
                }  
            }  
        for(i=0;i<30;i++)  
        {  
            if(a[29][i]<min)  
                min=a[29][i];  
            if(a[29][i]>max)  
                max=a[29][i];  
        }  
        System.out.println(2086458231/min*max);
    }
}

第九届1.哪天返回

题目:小明被不明势力劫持。后被扔到x星站再无问津。小明得知每天都有飞船飞往地球,但
需要108元的船票,而他却身无分文。他决定在x星战打工。好心的老板答应包食宿,第1天
给他1元钱。并且,以后的每一天都比前一天多2元钱,直到他有足够的钱买票。请计算一下
,小明在第几天就能凑够108元,返回地球。要求提交的是一个整数,表示第几天。请不要提
交任何多余的内容。

**答案:11**

思路:运用高中数列知识即可

第九届2.猴子分香蕉

题目:5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙
滩上离去。第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继
续睡觉。第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来
继续睡觉。第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起
来继续睡觉。第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏
起来继续睡觉。第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!请计算一开始
最少有多少个香蕉。需要提交的是一个整数,不要填写任何多余的内容。

**答案:3141**

思路:暴力循环求解

public class Main {

	public static void main(String[] args) {
	for (int i = 0;;i++) {
		int sum = i;
		if (sum%5 == 1) {
			sum = sum-sum/5-1;
			if (sum%5 == 2) {
				sum = sum-sum/5-2;
				if (sum%5 == 3) {
					sum = sum-sum/5-3;
					if (sum%5 == 4) {
						sum = sum-sum/5-4;
						if (sum%5 == 0&&sum != 0) {
							System.out.print(i);
						break;
						}
					}
				}
			}
		}
	}	
}
}

第九届3.字母列阵

题目:仔细寻找,会发现:在下面的8x8的方阵中,隐藏着字母序列:"LANQIAO"。
SLANQIAO
ZOEXCCGB
MOAYWKHI
BCCIPLJQ
SLANQIAO
RSFWFNYA
XIFZVWAL
COAIQNAL
我们约定: 序列可以水平,垂直,或者是斜向;
并且走向不限(实际上就是有一共8种方向)。
上图中一共有4个满足要求的串。
下面有一个更大的(100x100)的字母方阵。
你能算出其中隐藏了多少个“LANQIAO”吗?
FOAIQNALWIKEGNICJWAOSXDHTHZPOLGYELORAUHOHCZIERPTOOJUITQJCFNIYYQHSBEABBQZPNGYQTCLSKZFCYWDGOAIADKLSNGJ
GSOZTQKCCSDWGUWAUOZKNILGVNLMCLXQVBJENIHIVLRPVVXXFTHQUXUAVZZOFFJ	HYLMGTLANQIAOQQILCDCJERJASNCTLYGRMHGF
TSDFYTLVIBHKLJVVJUDMKGJZGNNSTPVLCKTOFMUEUFSVQIAUVHNVFTGBDDARPKYNNCUOYUAZXQJNOEEYKLFRMOEMHUKJTPETHLES
FKVINSLWEVGAGMKVFVIUBMYOIAFHLVNKNTYKTZWVXQWRWIGPENFXYDTKRVPKRTHMGHVYOCLDCKMEKRLGEKBYUCLOLYPAKPFSOREH
KWPUOLOVMOFBIXYACWRDYBINTMPASPCEOKHXQIGBQQMCEOIVULIEOPFSCSIHENAJCVDPJDOIWIIULFDNOZOFVAMCABVGKAKCOZMGXWMYRTAFGFOCNHLBGNGOXPJSTWLZUNNAGIRETGXFWAQSSJPFTQAX	MTQWMZWYVEPQERKSWTSCHSQOOBGXAQTBCHOEGBDVKGWJIFTG
ZWWJEIISPLMXIMGHOOGDRZFTGNDDWDWMNUFWJYJGULPHNUFSAQNNIUVAAFZIAZKFXXNWCEABGJAUMGYEIEFVQXVHHHEDYUITRCQB
XZHDPZQTOBECJVBZLACVXACZEDYOGVAVQRNWEOWGRAQYUEUESTEDQTYJUTEFOOITSHDDZHONJGBRCWNEQLZUTBNQIADKNFIOMWZR
EBFKCVNLURZSNPOLTISRPDTNUMCDGKTYRGIOVEPTUTSBAWQKWWEUWIWHAANUZUADGZEATZOQICWFUJTWNZDBKLQNELWVTBNDLNFH
PESISEATZNCDFRMXBQUKBFTIGYSFCWVHPMSUSDKPSCOMVLDOHYQVFHAJKRDTAVLIMNZBZSMLMRTLRPSLAHXDBASDMWAAYBPYVJZF
SCCWYHLQOUKBMCEYENQNJXFOMOOJMTKDSHJJOHDKEGATFZHGWJJAZJROWHAZUFGEQKPYXLCAAXHHQBDALPYUDWZQHBASBBCFGQCQ
ZKNXUBRYZVSPQHOVLAEUAUITMPWXNXJQVIBJVBCSVXKWFAFRPRWOLYVSDVTGGOFFMNQJZOBUDJLFHJTCYMPNOBHQJHGKLIKLZMLA
POCKVEQXUAVHERIAQLGJHYOOVOMTXQFRTBFSETOZICPCHZHFBWNESVJJLSVSVOOGYYABFESWNWDNYBGBNAKRCFQMTCUMIFTESVIN
JCAULIQRYUMAMAOVVWSEUTMECXSDTONRMMROQUISYEURSAYNZUVOPXLIFBDOHPXMABBLEQZGLJXQJOEYYRRRCFTEZQAOIWKRJQDL
ZNUUDWZXZZURPMHGXQGNQBIQWWNERZWULSAPIBODBFFQQIHEQKCKLJYQNXQUTAAYGRBXSLLQNOQPZJEWHETQHPXJANMJFOHINWOW
KJGAWWFSVIZHFNUWBLWYVPIWAEICCAHOEIWRADSLOZGPSVGPUBUUQAVYCHOIGINKYKJABWAQCZCXOBKTNJZQRHLUFKQLACAAOIWJ
SIKWLXQHKDFJVGBVXWDWJKUSFRQRTDJYQMNFOQQALHRLMHSDMCFLAOVKDMTKMTPVTLAZLYJNJXZCFRHHSDIXYUUSVIMIICLUJHFW
JHWUSMCFYHPIXHAPBBSHYDQCKVGQFTENLVERFVOVDCLSTQFUSEPUMTFODLZLYQXDOXAEPONIQWTDWSAWBNSZYACGSJQSHAUMIKXT
MVBNFXMFNPAYSODPXEAYNRKTEZJWMUACSIUYPIORUFPMXAOZZJPJXPFLNSKNIAMETMOVULZPQIJJIRCSYQXOEVRHCNACSBRHKYNW
KGKBTBHGWKVJYZCOVNSKUREKZEIWVLOHAMUAYKLUGHEUESICBZAHURNTJAECTHRNKSIJQFIPVZANSZYSPJWHPKHCAPEYWNXUYQSD
RRRFYQFIQSWYRQTSNGNUFOBMSLGAFWPJGYEHGASFKTJCCZPXFIQLSXNKNWCYVTETOAPCOZJNHEWOCCAWVDEZUQCLLAVUQJJTQCKJ
NMBKMUENVGXXVMQCLXPJDQIQCFWYADIFDSGINGZDJYHPUPXVRMWDIPJRWPNRYOFGYYPEAVKDEMLYRRRMNCRQXPTDSQIVKKGJWDEF
SBAEKIFZCKDOMIQKBDWVQGBYWPDIBOLQUGAQRXLJDAZMXVZXYSNWEWTNZKYREMBEUHOTFOCKEJSXCMUBCKXNGQXTQJRCRCLWJTOI
YXBFBIBRAAFNPKBLTSMCFERZURZNWHMOEHIHNQTBWXNPJGIDYDPRGEWACCBULJRACOFLANQIAOIHMYCNQHVKXSIGAMWAHUSNBBTD
QDGPTRONXHAZWOUPNBFJFEWAMFZUQZFDKAPNJUBQPWBPYGPZHKUDZZDLCCWHGAUKJCSLLFWGPYJKJQBNLCZESOGXXSQCVVKVRVAW
NXPGQOUEFLUZHHSAODIWEPZLXVQLYGVOOVCCREDJZJOMCSCFFKEIEAVCTPUZOWNOLJHGBJHJFBFFORGXOXXFOCAGBWEFCIDEKDLB
PTXSUINQAJURNFQPMMSPLZTQAHCIOFJUEFFZGIHTSJNIEXQLLHRQUXXLLORJEHGQJOXSLIAVFPEJNGMMVAXDDMPXLOSTRLLFLYRM
JQNCLENGTROIKDWBMXRNJYPGZRQOREPJJPTXKVVKPYYZENEOIQKZOPXAYGFXORXRIDGATHMZFDJIOIOKVDJBHSXQMYCBYFGXWHLH
CITGTILGPGBHZMNWWHXEFPGDPJUVFBJKAQWACZHPRPJYCOLGZTBDCVHNRSUAJUQAWAPMQJDQIFPZQZEONWHIYKMXDZOMVETEFJRB
RDOTIDCFEESOKYPYCGQQKOGPMGJRITSVTKOKDSXLRLJRRHNFRFXCMDNQMCEGZFJWHZOAFBQXXPXNBSWTSUYPAWQRHAUGLNPBRSJT
HOWRIUGMOQTUYIHDWJRFBWWKWYKCICSVBVKTBIIWGFSVIFCTUKIHHUUISCOTEOYRWQXTAEBXQQOLLMOALNIYVCCHNSWIKHMYYNZO
OFRIYYXPPSRTPAYMUJSSDILKIZAYSEIOLANQIAOVKARDPGVFCSYBSNHAPGTIKLAWTTKOEADWRLAACAAFYTBTNSGFTYLYUHJXBMMA
NJFTMLUIBKDPWBXQOMBVQXCZOIREHRSZCSJOIVBXWQIBUTYBQNTZRVROHGOIZYAJWXLEATLOZJIKJMIHSLGSVTCXJWIOOGWSERRQ
DBQJNGBLRIYFIKHBEYOZQBOAGGNIZKFDHWXCFNJLBQXVLHIQNIBZSDLTTRERHNWCMLJCVBBGGAQTPUQHIRABXPQSYGSDVMBNNDFG
KPLFUYXHYGOCZPPXMWCZYNKCYBCRZVKFBHQXPGPBZFTTGEPQTJMOFHAYSQQZDMQECGXOXADYHNNXUKNBXZBYHBOULXNBJZKIZREF
LVHAMSNXJOCVRPVGJUWXFVOCUCLCZDXRPBBDRLRAVVNLOZWOHWMXYSNMXAKJYWYGILNGUJGIPKAUDVANZLFWKUWWUSQYBRCBVDIJ
QCXPLOTPPGXCUZOUSSTXHVMLHVMJTUSSOPLRKEBQSGWNGVHKANVZWYQHSHLIPWSYCPKTUKPMWPLVFLLAHXZQANFXHFNYHIQVIOYN
ZPTJJCBHXPSUPOMNRVCKXSUFCNRCRNCPTPGIDQOEQUDFNUNMJPOEKVIMUJAJZOUKMAFSLDWYMCHTSNJYUDJAHQOIXPYSRHVAFFCR
DCGMEEWXWMNOSSJNIZCINRHENPPPCYVFWYCONOPKXMFZXXIHNXIGAHAMHSBRESOETGVXWDNQLGCEOUDDJXHQIVCHRNKBFFEWILGY
SOAIQNALXRBSGAQIDQVMVDKVZCPMJNXKXRXPFZAUVQPBHHQKTPDSQROLQTUGMFQRWGVEWCYPDYDZGNNNUFKJUEHJKPLIQNRQYXHU
GKGWUCJXUKAEHLRLNDFUQPSJAZTVJRXWXQVBMRJXULEMJJPDCVTOWVFDBVLSBHZRRQUVMUQYKTJCLSGGHGCPHPHMWYAECLJIZUWV
QQNKPQRJMSOCEAYDNKPHVEGKAGCKAPDXTGVXULHUXHJPDXCSKQTCJENVTZTMRUENCSWHBEORALSREBWAJEMQDXMRKGHJGICDHKHY
YNSDSWDRLBBFUFVVICMGUCGBSVDLJNXGKXNFGVLKAVBJRRRUHKRXTPBJAKIEBAVMDIOJLIUDABCGNPNJIYBCXMOOWKRPHPYSWRDC
BORWTNBISSLTVKBRTLWKRNCEDCNEGCIYJIPDICFAVNOISYAHWBLGMNFKXZYTTWJOBEPNMSJEJMHXVPGOJOLQQQVXFGEULANQIAOD
OQETOJHCZXGTUKIWGMEVVMXCURISUOFQSAWZWDMZWVYHZMPEIMWKJDGERODVVUXYRTYLCRGYQQOIOFZSSZRAIESWBQOAIQNALJNR
HEYWHPLLPCUEOCBAOWGAYEJZQJHLVNMVQNSQQGGUBOIMDPFLOVSQGBLYAMBRYJDVOXOQINLJAVYALAKHPKOYNKGXIISSJNGKHYMS
IQVRYKXCUFIRNENEXFJTMOTJWYXSMTDHHPRHWIXETWVVIXZELKLLWRWQYGBCGJNYSUQEFCOUDNIJMLJNLAWSYJGULKBCFPYVSSMW
WQHGWRQFWFOTGPBBSJBDUKOMBXNRPIMCGPGVZFADWTBVIEMVTBXVAFQDDMJALCOMZTXUFFKBQQZDFAMTFWEXTHBKNWRLUVITQXLN
OPPJQKNGHWWPENVQIABJCQNKXNPWOWRFEOKQPQLANQIAORGGOLAYCEGZBHZVLPBERWYIJNJUNXKULUQOJLTNRDZDEYWEMYCHJLLB
LJISOAQLXJEFXVTOZSICOLQIJEXUANJWIFSIMGUQWHBXUDWOEILYFUZTGDZDSPLZPDPXBLFAXLEFQFEPDSJQWEQMXKKHCXHMSATM
UMUJENPBYKZLWAJAXJKDIYCBREBPOETQHMRHLKSEZUIPRGWIZDDQLSJAPKPBWMJMPZWLNFLFCQOCDBMLIHIYCXUJLFLPZVGWBKMY
WHZJLKEWUPETVUREKVKCLBNYFLWCERVIPUDINNWGQTUHWXCTDVTMYATYUZLMVLOHKBOGIZCQDOWFBCWJAVUXYUEVRKPOXCKHAWZC
RPLNLCUHJRADHJNSDPZXIKXGUKEJZCFJQASVUBSNLXCJXVCJZXGMRYRLOBCNGPDUJQVEFKMYHNZGZOAIQNALQDHTBWJXPKJLFXJY
MKCEZEDAFGSOCORWJGMOKWPVVBVDYZDZHPXFWJBDELHPGOQHMBAHUUUJMGXAEKZCTQTBXNVYUIQUVZGXSKQXJWRUPSFIJDYIAORC
GKFKQNXPJWOPPBTUKTHUBIROSYOVFEMJBRREWICJPCIOSTWPAUSKTRQULXPWRSXHSRYBCWYCYOTCTPFSQLDIILIGMEVZKYSOYRPH
SFDSCSMLLNARCCGCBJOGZAEQTGNGSFAQIXLPDBSWZDTYVASYYPVBRFBTIAGGWONGSVKCJDBBLYKAIOXUATGMALZXFOHZFTXALCFU
CUSSTLCRYPDTFSFJFENKJWTEBOBEPLSNXLALQWCKSLVMZQDJITHZKVCCQXTEXOSVAUFYAZXJUOAPPVEEWOIIMOSZZMCOQBRUXWKG
PDOFSCKKJJTRYRWGLEZODQTJSIMXIAOLNMLPHBAYLPTTLPYWILSEIIQVSXNHIJEORVCNJHYXRBIZZJTADGMRTSXVRXYGVQQNUEIC
IHNJOQXUXTXFPALCHOELNVMWDWQTEARUKPIFWXJSMWZLMNLAODUTKNZDYRFRLGBLIBGIBXJBOYMLYLANQIAORORYKSJPOOOAMVRN
IWIUHLYJKTQGVJBDPROSRGZUFITDIBCDPICNEFIGHWGSROWBYKUCLCQYLJXLHLXS	CTJWKDLHHMLDBZCVDKPXYYASHUUMUJMVSXAD
GXOYXQFEBFIEJJLHBNGSYALOUXNQBXXZAAZJXENJJVVGFVHOTKSLEGLJVSJCQHSSZFEIOGBOGWSPIRENQAAWRQFBEFEXBKGMSTRC
PYIANSGMNKBCDPHWDUPKICQEUDNZPNGRUJYSZIRLXGXXITAFBCANGDLVAQLDPVTJNSAUZMBBNOBBOERSHQIOLBVTSPPJKVCMXUBS
IKMDIYSNCJZKJKJQMTIKEPRUNAHJUSWJHSLWIVWHYAYLOIOGSZVWKQWXZDBPHWZRAIPMXDJHBIISVJWVEVZAEGAKCYYMNZARBZPC
DLDFVQDFDMVHYVOWEKMFKWUXLTPWIVKPRZZXOLMDAPAIQEKJHCHYAGJDBOFWDGNEGQGOOKWSKLTLREMGGTVJFHAIBCQKNZVRCZYS
FBQASGNCCBBGNKJHCDBTGBIIWKMPHDABKEWDEPYEAVKNMPATUZZUOEHGUGAZNECSGUCIIJPMMRAMTVADMTCRJCBWDLWWFNFOWMVZ
XFJFBGDAVGGAIZHAUIYENDZTRUWHPQUFWCHOXNCWYNAWVPLBLNQKQDTKQQKXNFXCTBGRWUZFHNRBDNLNKQVOLLGBBJQIYOBCEIKO
CURAGWXMLYBSIZLAXFONZZMQMRNNSRQKRHQGFGZUTLONAYRKSSOWAMKZBSGOOYQDPTBHGPBNQEDCZHRTOXREOFJEKJVIZXZBCJPN
KGYBZTZRKOGBETJRUWRNUCIFKIMCZGYTZLCZYGCGKVZRJIFZQIQPTCPPUHYWIXBOFFGSGSAIMNGKKUUROAVNJUQQNSWJRZIZEHAF
DDAOBVCPOVODVJFLSNPJXHWQBHILWZAHQQMTQASNADZLZNXJLJMFCOUWOZJCMVVTYCKTUBABWLCEBNYWAMOLNBQQYBRUJCQCZALE
TVVRPMYFIKINHIUEJBDLTCUMMUWICIUVCZNIQIUEWVAHLANQIAONMEYJWPDAFXVNOSOFDOCESSLGZPTJINBUAFWWWMPTYALZIGVD
DCZGKILMBFXIQQFEKJBIUDEMIFCANVGNYZAYSQFMNNQFEPZFUUVGTBKSMDXITBLANQIAOQUKTPNYPOWSQQYWWMJHSDYVFDJYXBAF
VGYXAMDRRZWVIHNQPZZWRNWBTROOJOLNUGXBILZKQEGIQSYGKZGODPWBJSCMRRWSSQURUFIAFQGEZLGZNOEQMNQEYUKPEQPPVAMO
SYSFUAJFKIPUJVQSZRWQCJYAUMLDDNOKODDXIEQIFLANQIAOZFUNKUBVDBLMJOAUTVCZVLKJRQIORQPGAVCEYVNYUZHXILHERYEC
GJEKWEKIJNIWUXZNVIWIAANHIOSOLATSQFSSCTAKESUTSPPYFHEHLVLIBJZEEBCOWMNHFTZMAPKFUPNFLTFFJQRVJHAKDVMGGUIX
KAKXXNKSOAIQNALLWKWGVACYWBQEVTFSEUCYRORQTHWFUJFLQHONWZEKPLSNPRPBOMOFFCPMKXFZBKIERBKDYFKYUEYVYRPMOAQI
WNICDLQKZXGTKDLIEFBGELGJOAIQNALXZLGGDQIBVEULDPBWUJNTYOKFBPGMAWRRUJPPIGYCNYURNOSQRIRBAZAGWWDUHAAZQWPT
KFXZQXRMKSBUXWOUVVHSJWTLKZELGXMMAIDSJIWGCJPCBWZIEKMNUPUAFHTUMOZKJWVTIAQNOHELEMWGKJHKPNJVSRVHAUFXBUOU
XOWCZJYQLXJRUOOYSKDLDXKWTTJBYBTLKSWRUYPOYTPBGUJXBMRWNELBWADCSZDAEEFGPVRHNNLBFDDXNPDXLKQUSJAZDEUDBMBD
QIKYEKMVUHGGWZDKXFVQQNECZOAWCFUBHQMEPEPKEFSDBAYJQOSGAIHRBRAUKLQRANKMTTIOJDDXAEWTQHIYSGRRMEFTNNWCLZSI
ZFUQAQCSFNVUQMKUQWBWFQIEQVVXPOSVIDTUOBLLTGHQKEMSUWWHWRISLGRDPPQPZBANSGDWXKNYTKMWECPMPDYSCJZXPUKPWGYI
CNGVLBSCBHRLJARWSRENGHYYQDKRATERCPEAOPAJZUMOYIDHVPDMQPKKHCBAMRBGEIEXXJALMCXKPUGXYVINRORFYURXAMOJCBZQ
YJHHAWESCLMDIHVYMLAJZQSYTDEURWYPOLJCAKIKSATGVIALBLWPPKDEGSPMRLDBQNVPPCLQXKUQLQJERMYFGAETUATEBQZUMGUN
NBWUBVXYDFPLPJYLIDFVTVKKGFWMXVINLJUDUPABTSBJAJENZSXIMUJQWPEZTAVDMBBHFYTJKYFXIXQTBTTQIKQXQDPWYNMXRQDJ
OGWLZQUBJJHAQNPVRGHGPNMMJPIDGANYEEDWYPOLKLNEPYSRTQYCJLSWFRJRRGGSNSDHIXYYSNAKKBWQDDGYYMOGPUXQEUSAPSOU
CLLSELRVFZUFYVTJQKCQHNICMERWQFQNPVRPIIYKHZWJYJAFCLNSZXUHSPOZWQUMJHLKKYJENVZOCSWCTPYWIZONUUCLSUROGAYS
AZGNIMXPLPCEPULRRBHHQOBELHJZPUQAMWUASVKDXVEWAOFMAYSJFXHCNEUXUQWUESFBRUFZQLKKWHCHKOPLECCBYSLECAEZIMMI
TUUEOCEBAUKWLTSYJJPLZTIARAOZXKYYWIOXBBTZZCSAULKNEJWVQXIKUWBIWVHGNTHVBAWAVPGLHSDJDLPVHHHUNVSFKXARXLVQ
EMVDFSLANQIAOPTLFLFRKGNUZCTXWCAXHECTZFHWUFENRGQICHTYLSHZWIEGLNVDJZOMTKAAUWOHVOVOCTUKOSINSAYIAEUYORNA
VGPRMLCAQZIPRFQOZMEFTQZYVOTVFNVOIQSJCIPPQXQKJIXICUIGMHAJJMSXENCBQFIJHNZXIQMWACKDKQSEWWKMLOAUPFHAZGRY
SQWQMRSQBGGKYKGWEZYRIHWGNXRPOUMFSFGTYDLUDWPWAVQORTMQUXWKUQVNMDPWQFIZPOIHCJATODRQGZDMQXZVNXXVEJNGWZOM
PVBGZSQPCELDIWDHOQWAUHILGLPYRIICTLFSOYKQZYZOCIZPTECSWOODGGBDTSGIMYGMVPJPRPEVWOOKYFWRGXHWUCRQNYJEMSYL
XWOFXFVDXPTHYTCEGMODCILAHYBREZVVHOUPZKCNHUEVPMKHUBNRPFMWXVQACVZCALZLYMZSBLCEASPMIEFOTGKMPGWYQADSNDPR
QPHAVLZDZLKIEISFLLVWXAVBZLZIJRHGROUVGXRDLUJAXNHBBZYNCVERJGSKLWZEKGJBCWMSMLYIHZFFMIOGVIMZQBSRHQWAADYN
MNXEGTDXCDKIUDOISQXEUJWETPELKBCYFSDNJQWNNBPYMWBUPQBAAINMYZOYCEGNLFNNHZFEMSQVXJJGWBCRAVKZFWFBKMBRVBFD
HKACSZIUWUXLWKFPKOCUQJEPQDZCMUJFLVCLIOQQRVKSWFIAKNHMRLNJTKGVNTGLCVPVMBLJANOBCXUGVWBJYSIXZQVAVFWILWFB
QWNLTPMCYHRSKVHXLONRANWKWXUTHYQLIOFKGDBMSWDRCYRKVSAGGRJMWQYQFLMUIGGCLAUQAACTYLPZEOJBHMWRKHCRXGTGRMUP
CPQKJRBLYDNPUGHCRBVYBAIRVCAWLBWVWCMKNBIRKJOUGYQEBQRHDSTWXDIWGRVMLIJFBWHLHCDAAVUDLZSCGQNOUXVUIVIZZZMD
NMHGYPFUUDWKQGTAKKGCDFJFYJFNRZVXDPGZEAMWQVQZODKTXHIYFVKJSSAWVHYCUCZMLLBPXTILDYJQEMWDRUFKISOUVPUDTYPB
FDAQUBXHUJYTAYNWVIJNUSQDTQDEMUAPWXRYUWONTBDZCHZOUEGPMWEZTQWWSHAYOBWVTDIMZYNVNZKUHOFCQKPHJXWNRCGUJEKO
WSDAUGUTVWCVHEMOIRJJGTANUWTSAIXXEVZTBDHPGSRHHVWCDZVZYRJTLONIJV	XEATHQXOUKBIGZONFRSZIOGWNTYAJYLQCGEOWY
请提交一个整数,不要填写任何多余的内容。

思路:DFS

import java.util.*;
 
public class A extends Object{
	
	private static final Scanner input = new Scanner(System.in);
	private static final int move[][] = {{1,0},{1,1},{1,-1},{0,1},{0,-1},{-1,0},{-1,1},{-1,-1}};
	private static final String split = "LANQIAO";
	private static final int arrayWidth = 100;
	private static final int arrayHeight = 100;
    private static int sum = 0;
	
	public static void main(String[] args){
		char[][] data = getCharArrayData(arrayWidth,arrayHeight);
            for(int i=0;i<data.length;i++){
                for(int j=0;j<data.length;j++){
                    search(data,0,i,j,"",-1);
                }
            }
        System.out.println(sum);
		input.close();
	}
	
	/**
	*	d代表搜索的方向(题目要求,搜索方向是8个固定的方向)
	**/
	public static void search(char[][] data,int length,int x,int y,String temp,int d){
		if(x<0||x>arrayWidth-1||y<0||y>arrayHeight-1){
	    	return;
		}
        if(split.charAt(length) != data[x][y]){
            return;
        }
        temp = temp + data[x][y];
		if(temp.equalsIgnoreCase(split)){
            sum = sum + 1;
            return;
        }
        if(length == split.length()){
            return;
        }
        if(d==-1){
            for(int i=0;i<8;i++){
                search(data,length+1,x+move[i][0],y+move[i][1],temp,i);
            }
        }else{
            search(data,length+1,x+move[d][0],y+move[d][1],temp,d);
        }
	}
	
	public static char[][] getCharArrayData(int x,int y){
		char[][] array = new char[x][y];
		for(int i=0;i<x;i++){
			String temp = input.next();
			for(int j=0;j<y;j++){
				array[i][j] = temp.charAt(j);
			}
		}
		return array;
	}
	
}


————————————————
版权声明:本文为CSDN博主「小柠檬被吃了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yourlittlelemon/article/details/79875907

第十届1.求和

题目:小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包 
括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到
2019 中,所有这样的数的和是多少?
**答案:1905111**

思路:取各个位上的每一位数,满足条件的存入数组,最后数组相加

import java.util.Arrays;
public class Main {
	public static void main(String[] args) {
		int[] num = new int[2020];
		int res = 0;
		for (int j = 0;j <= 2019; j++) {
		int i = j;
		while (i != 0) {
			res = i%10;
			if (res == 2||res == 0||res == 1||res == 9) {
					num[j] = j;
					break;
				}
			i = i/10;
			}
		}
		int ans = 0 ;
		for (int k = 0;k < num.length;k++) {
			ans = ans + num[k];
		}
		System.out.print(ans);
	}
}

第十届2.矩形切割

题目:小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。当他面对
一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块矩形,
然后再切割剩下的矩形材料,直到全部切为正方形为止。例如,对于一块两边分别为
 5 和 3 的材料(记为 5 × 3),小明会依次切出3 × 3、 2 × 	2、 1 × 1、
 1 × 1 共 4 个正方形。现在小明有一块矩形的材料,两边长分别是 2019 和 324
 。请问小明最终会切出多少个正方形?
 **答案:21**

思路:简单的数学题
在这里插入图片描述

第十届3.不同子串

题目:一个字符串的非空子串是指字符串中长度至少为1 的连续的一段字符组成的串。
例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共7 个。
注意在计算时,只算本质不同的串的个数。
请问,字符串0100110001010001 有多少个不同的非空子串?
**答案:**

思路:滑动窗口

在这里插入代码片

第十一届1.约数个数

题目:对于一个整数,能整除这个整数的数称为这个数的约数。
例如:1, 2, 3, 6 都是 6 的约数。
请问 78120 有多少个约数。
答案:96

思路:直接遍历

public class Test2 {
//78120
	public static void main(String[] args) {
		int flag = 0;
		for (int i = 1; i <= 78120; i++) {
			if (78120%i == 0)
				flag++;
		}
		System.out.print(flag);
	}
}

第十一届2.门牌制作

题目:小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字
符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、 0、 1、 7,即需要 1 个
字符 0, 2 个字符 1, 1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
答案:624

思路:循环取1-2020数的每一位,如果每有2则拿flag记录

public class Test2 {
//1-2020中有多少2
	public static void main(String[] args) {
		int flag = 0;
		int num;
		for (int i = 1;i <= 2020; i ++) {
			int x = i;     // 拿x接收i  else陷入死循环
			while (x != 0) {
				num = x%10;
				if (num == 2)
					flag++;
				x = x/10;
			}
		}
		System.out.print(flag);
	}
}

第十一届3.跑步锻炼

题目:小蓝每天都锻炼身体。 正常情况下,小蓝每天跑 1 千米。如果某天是周一或
者月初(1 日),为了激励自己,小蓝要跑 2千米。如果同时是周一或月初,小蓝也
是跑 2 千米。 小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020
年10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
答案:8879

思路:先计算出在此期间共有多少天(因为每天1km),再算出此期间有多少个周一和月初(因为周一和月初会在原有的基础上再加1km),最后再算出有多少天是周一和月初为同一天(因为都只在原有的基础上加1km所以要减去)
步骤:1.用excel计算【2020/10/1 - 2000/1/1】因为头尾两天都算所以要+1

在这里插入图片描述
2.算月初,直接手算12*20+10 = 250
3.算周一,用excel模板或系统自带日历,一个一个找
在这里插入图片描述
4.找周一和月初也是同理
5.最后得出7580+250+1083-34=8879


前三题做的一路坎坷,终于来到了(4-6题),由于蓝桥杯杯赛直播中说到,时间太久远的真题参考性不大,因此下面的题从第八届开始做起。


第十届4.质数

题目:我们知道第一个质数是2,第二个质数是3,第三个质数是5........请你计算第
2019个质数是多少
**答案:17551**

思路:暴力枚举

public class Main {
	static int count = 1;   /*用于计数,从1开始
	因为 2枚举不到但是题目中2算其中一个质数*/
	public static void main(String[] args) {
		int num;
		int i;
		for ( num = 2; num <= 100000;num++) {
			for ( i = 2; i < num; i++) {
				if (num % i == 0) 
					break;
			}
				if (num == i)
					count ++;
				if (count == 2019)
					break;
		}
		System.out.print(num);
	}

第十届5.最大降雨量

题目:由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。这个法术		
需要用到他手中的49张法术符,上面分别写着1至49这49个数字。法术一共持续7周,
每天小明都要使用一张法术符,法术符不能重复使用。
每周,小明施展法术产生的能量为这周7张法术符上数字的中位数。法术施展完7周
后,求雨将获得成功,降雨量为7周能量的中位数。
由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多少?
**答案:34**

思路:
在这里插入图片描述

第十届6.旋转

题目:图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时 针旋转 90 度。 我们用一个 n×m 的二维数组来表示一个图片,例如下面给出一个 3×4 的 图片的例子:
1 3 5 7 
9 8 7 6
3 5 9 7
这个图片顺时针旋转 90 度后的图片如下:
3 9 1 
5 8 3 
9 7 5 
7 6 7
给定初始图片,请计算旋转后的图片。
【输入格式】
输入的第一行包含两个整数 n 和 m,分别表示行数和列数。 接下来 n 行,每行 m 个整数,
表示给定的图片。图片中的每个元素(像 素)为一个值为 0 至 255 之间的整数(包含 0 和 
255)。

错误思路:手写模拟旋转的过程可知,顺时针旋转90°只需要矩阵行列交换再讲第一列和最后一列所有元素互换即可****

错误代码:

import java.util.Arrays;
import java.util.Scanner;
public class Main {
	
	public static void main(String[] args) {     //(未运行)
		Scanner scr = new Scanner (System.in);
		int n = scr.nextInt();
		int m = scr.nextInt();
		CreatAndRotate (n,m);
	}
	
	
	public static void CreatAndRotate (int col, int row) {
		//数组赋值
		Scanner scanner = new Scanner (System.in);
		int[][] num = new int[col][row]; 
		for (int n = 0;n < col;n ++) {
			for (int m = 0;m < row; m ++) {
				num[n][m] = scanner.nextInt();	
  			}
		}
		//两个数组行列交换
		int res[][] = MNswap (num);
		//把第一列和最后一列元素交换后 即是90°旋转
		Nswap(res);
		//输出
		for (int n = 0;n < res.length;n ++) {
			for (int m = 0;m < res[res.length].length; m ++) {
				System.out.print(res[n][m]);
  			}
			System.out.println();
		}
	}
		
	public static int[][] MNswap (int num1[][]) {    //数组之间行列交换
		int[][] temp = new int[num1.length][num1[num1.length].length];
		for (int i = 0;i < num1.length; i++) {
			for (int j = 0;j < num1[i].length; j++) {
				temp[i][j] = num1[j][i];
			}
		}
		return temp;
	}
	
	public static void Nswap (int[][] num) {   //交换二维数组第一列和最后一列元素
		for (int i = 0;i < num.length;i ++) {
			int temp = num [i][0];
			num[i][0] = num[i][num[0].length];
			num[i][num[0].length] = temp;
		}
	}
}

/*public static void swap (int n,int m) { 
		int temp = n;
		n = m;
		m = temp;
}*/

思路:行列交换后写出下标发现规律:先对数组进行行列交换 然后发现交换后的列下标为(行下标-1) 提示:注意总结规律

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner scanner = new Scanner (System.in);
		int col,row;
		col = scanner.nextInt();
		row = scanner.nextInt();
		int[][] num = new int[col][row] ;
		for (int i = 0; i < col; i++) {
			for (int j = 0; j < row; j++) {
				num[i][j] = scanner.nextInt();
			}
		}
		for (int j = 0; j < row; j++) {
			for (int i = col-1; i >= 0; i--) {
				System.out.print(num[i][j] + " ");
			}
		System.out.println();
		}
	}
}

第十一届5.蛇形填数

题目:如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 :::
3 5 8 14 :::
4 9 13 :::
10 12 :::
11 :::
:::
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列
的数是多少 ?
答案:761

思路:经分析得矩阵中的主对角线成递推关系,又 第20行20列也在主对角线上因此求第递推数列的第二十项即可得到 递推关系为F(n)-F(n-1)=4(n-1)

public class Test2 {
//  递推公式 F(n)-F(n-1) = 4(n-1)
	public static void main(String[] args) {
		int num = 1;
		for (int i = 0; i < 20;i ++) {
			num = num+4*i;
			System.out.print(num+" ");
		}	
	}
}

第十一届6.成绩统计

题目:小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 
0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。

思路:基本题 直接循环模拟判断 该题重点是小数转百分制并四舍五入保留整数

import java.util.Scanner;
import java.text.NumberFormat;
import java.util.Arrays;
/*小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。*/
public class Main {

	public static void main(String[] args) {
		double pass = 0,nice = 0; //pass 记录及格人数  nice 记录优秀人数
		Scanner scanner = new Scanner (System.in);
		double grade = scanner.nextInt();
		double[] score = new double[(int) grade]; 
		for (int i = 0; i < grade; i++) {
			score[i] = scanner.nextInt();
			if (score[i] >= 85) {
				nice++;
				pass++;
			}
			else if (score[i]>=60 &&score[i]<85 ) 
				pass++;
		}
		NumberFormat num = NumberFormat.getPercentInstance(); 
		num.setMaximumIntegerDigits(3); 
		num.setMaximumFractionDigits(0); 
		double rPass = pass/grade;
		double rNice = nice/grade;
	//	String res1 = String.format("%.2f",rNice);
	//	String res2 = String.format("%.2f",rPass);
		System.out.println(num.format(rPass));
		System.out.println(num.format(rNice));
	}
}

在这里插入图片描述

第九届4.第几个幸运数

题目:到x星球旅行的游客都被发给一个整数,作为游客编号。
x星的国王有个怪癖,他只喜欢数字3,5和7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。
我们来看前10个幸运数字是:
3 5 7 9 15 21 25 27 35 45
因而第11个幸运数字是:49
小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是
第几个幸运数字,否则领不到奖品。
请你帮小明计算一下,59084709587505是第几个幸运数字。
**答案:1905**

思路:因为3,5,7为因子 等价于 所有的数为x个3,y个5,z个7相乘构成,因此直接三重循环暴力求解即可得出 -------------------------------
注意:x,y,z不可同时为0

import java.lang.Math;
public class Main {

	public static void main(String[] args) {
		int flag = 0; // 用于计数
		long num = 59084709587505L;
		double x,y,z;
		for (x = 0; x < 50 ;x ++) {
			for (y = 0; y < 50 ;y ++) {
				for (z = 0; z < 50;z ++) {
					if ((Math.pow(3, x)*Math.pow(5, y)*Math.pow(7, z)<=num)) {
						flag += 1;
					}
				}
			}
		}
		System.out.print(flag-1);  // 减去一个x,y,z同时为0
	}
}

第十二届(第一场)1.ASC

题目:已知大写字母A的ASCII码值为65,那么大写字母L的ASCII码为多少
答案:76

思路:当时在考场想不起来ASCII是怎么排列的了直接用C++ 发现 ‘A’ + 1 = B 所以可知是顺序排列

#include <iostream>
using namespace std;
int main (){
	char s = 'A'+1;
	cout << s;	
	return 0;
} 

第十二届(第一场)2.空间

题目:小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位
二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问
256MB 的空间可以存储多少个 32 位二进制整数?

第十二届(第一场)3.卡片

题目:小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。
小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,
就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从 1 拼到多少。
例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,
但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。
现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1
拼到多少?
提示:建议使用计算机编程解决问题。
答案:3181

思路:一开始读题没读懂,然后直接做第四题了,后来返回来再读+分析看明白题目了。分析之后的题意就是,给你2021个0,2021个1,2021个2…2021个9,然后问你从1-x 这些数出现了2021次1的时候把这个x解出来

#include <iostream>
using namespace std;

int main (){
	int flag = 0,i;
	for (i = 0;i <= 20210;i ++){   // i<=20210的原因30张牌只能组成1-10,那么20210张牌组成的数一定不会超过20210 
		int x = i,num; 
		while (x != 0){
			num = x%10;
			if (num == 1)
				flag++;
				x = x/10;
		}
		if (flag == 2021){
			cout << i ;
			break;
		}
	}
	return 0;
} 

第十二届(第一场)4.相乘

题目:小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以
1000000007 的余数,会得到不同的数。
小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后
再除以 1000000007 后的余数为 999999999。如果存在,请在答案中提交这个数;
如果不存在,请在答案中提交 0。
答案:17812964

思路:直接在C++中开long long 进行计算

#include <iostream>
using namespace std;
int main (){
	for (long long i = 1; i <= 1000000007; i++){
		if ((i*2021)%1000000007 == 999999999){
			cout << i ;
			break;
		}
	}
	return 0;
} 

第十二届(第一场)5.路径

题目:小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图
中的最短路径。
小蓝的图由 2021 个结点组成,依次编号 1 至 2021。
对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点
之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条
长度为 a 和 b 的最小公倍数的无向边相连。
例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无
向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。
请计算,结点 1 和结点 2021 之间的最短路径长度是多少。
提示:建议使用计算机编程解决问题。

第十二届(第一场)6.显示时间

题目:小蓝要和朋友合作开发一个时间显示的网站。在服务器上,朋友已经获取
了当前的时间,用一个整数表示,值为从 1970 年 1 月 1 日 00:00:00 到当前时
刻经过的毫秒数。
现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要
显示出时分秒即可,毫秒也不用显示,直接舍去即可。
给定一个用整数表示的时间,请将这个时间对应的时分秒输出。
【输入格式】
输入一行包含一个整数,表示时间。
【输出格式】
输出时分秒表示的当前时间,格式形如 HH:MM:SS,其中 HH 表示时,值
为 0 到 23,MM 表示分,值为 0 到 59,SS 表示秒,值为 0 到 59。时、分、秒
不足两位时补前导 0。
【样例输入 1】
  46800999
【样例输出 1】
  13:00:00
【样例输入 2】
  1618708103123
【样例输出 2】
  01:08:23

思路:在考场时直接暴力模拟写+改浪费了1个多小时

// 有错误

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long ms = sc.nextLong();
		check (ms);
	}

	
	public static void check (long ms){
		if (ms%86400000 == 0 ||ms == 0)
			System.out.print("00:00:00");
		else if (ms > 86400000){
			ms = ms % 86400000 ;
			select (ms);
		}
		else 
			select (ms);
	}
	
	public static void select (long ms){
		char[] time = {'0','0',':','0','0',':','0','0'};
		if (ms > 3600000){
		long judge1 = ms/3600000;
			if (judge1 > 9){
				time[0] = (char) (time[0]+judge1/10);
				time[1] = (char) (time[1]+judge1%10);
			}
			else
				time[1] = (char) (time[1]+judge1);
		}
		
		long judge2 = ms%3600000;
		if (judge2 > 60000){
			long judge1 = ms/60000;
				if (judge1 > 9){
					time[3] = (char) (time[3]+judge1/10);
					time[4] = (char) (time[4]+judge1%10);
				}
				else
					time[3] = (char) (time[3]+judge1);
			}
		
		long judge3 = (ms%3600000)%60000;
		if (judge3 > 1000){
			long judge1 = ms/1000;
				if (judge1 > 9){
					time[6] = (char) (time[6]+judge1/10);
					time[7] = (char) (time[7]+judge1%10);
				}
				else
					time[7] = (char) (time[7]+judge1);
			}
		System.out.print(time[0]);
		System.out.print(time[1]);
		System.out.print(time[2]);
		System.out.print(time[3]);
		System.out.print(time[4]);
		System.out.print(time[5]);
		System.out.print(time[6]);
		System.out.print(time[7]);
	}
}

第十二届(第一场)7.砝码

题目:你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意
小于等于 N 的正整数重量。
那么这套砝码最少需要包含多少个砝码?
注意砝码可以放在天平两边。
【输入格式】
输入包含一个正整数 N。
【输出格式】
输出一个整数代表答案。
【样例输入】
7
【样例输出】
3
【样例说明】
3个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。
1 = 1;
2 = 6 − 4 (天平一边放 6,另一边放 4);
3 = 4 − 1;
4 = 4;
5 = 6 − 1;
6 = 6;
7 = 1 + 6;
少于 3 个砝码不可能称出 1 至 7 的所有重量。

第十二届(第一场)8.杨辉三角

题目:下面的图形是著名的杨辉三角形:
如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下
数列:
1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, ...
给定一个正整数 N,请你输出数列中第一次出现 N 是在第几个数?
【输入格式】
输入一个整数 N。
【输出格式】
输出一个整数代表答案。
【样例输入】
6
【样例输出】
13
【评测用例规模与约定】
对于 20% 的评测用例,1 ≤ N ≤ 10;
对于所有评测用例,1 ≤ N ≤ 1000000000。

第十二届(第一场)9.双序排列

题目:给定序列 (a1, a2, · · · , an) = (1, 2, · · · , n),即 ai = i。
小蓝将对这个序列进行 m 次操作,每次可能是将 a1, a2, · · · , aqi 降序排列,
或者将 aqi
, aqi+1, · · · , an 升序排列。
请求出操作完成后的序列。
【输入格式】
输入的第一行包含两个整数 n, m,分别表示序列的长度和操作次数。
接下来 m 行描述对序列的操作,其中第 i 行包含两个整数 pi
, qi 表示操作
类型和参数。当 pi = 0 时,表示将 a1, a2, · · · , aqi 降序排列;当 pi = 1 时,表示
将 aqi
, aqi+1, · · · , an 升序排列。
【输出格式】
输出一行,包含 n 个整数,相邻的整数之间使用一个空格分隔,表示操作
完成后的序列。
【样例输入】
3 3
0 3
1 2
0 2
【样例输出】
3 1 2
【样例说明】
原数列为 (1, 2, 3)。
第 1 步后为 (3, 2, 1)。
第 2 步后为 (3, 1, 2)。
第 3 步后为 (3, 1, 2)。与第 2 步操作后相同,因为前两个数已经是降序了。
【评测用例规模与约定】
对于 30% 的评测用例,n, m ≤ 1000;
对于 60% 的评测用例,n, m ≤ 5000;
对于所有评测用例,1 ≤ n, m ≤ 100000,0 ≤ ai ≤ 1,1 ≤ bi ≤ n。

第十三届(模拟赛)1.完全平方数的尾巴

题目:我们把一个能被表示成某个整数的平方的数称为完全平方数。
举个栗子:4 = 2 * 2,16 = 4 * 4,所以4,16是完全平方数。
请求出1~19856可以被完全平方的个数

思路:直接暴力循环

import java.lang.Math;
public class Main {
    public static void main(String[] args) {
        int flag = 0;
        for (int i = 1; i <= 19856; i++){
            double x = i;
            if (x*x<=19856){
                flag++;
            }
        }
        System.out.println(flag);
    }
}

第十三届(模拟赛)2.香港回归

题目:香港回归是指中华人民共和国政府决定在1997年7月1日对香港恢复行使主权,大不列
颠及北爱尔兰联合王国政府于1997年7月1日将香港交还给中华人民共和国的历史事件。请问
从香港回归(1997年7月1日00:00)至烟台南山学院校园模拟赛开始(2021年11月23日13:30)
,中间一共多少个小时?只填写一个数嗷~举个栗子:从今天00:00到13:30一共有13.5个小时

思路:直接用excel算出天数乘24再加13.5

在这里插入图片描述

第十三届(模拟赛)3.卡片

	题目:小E有很多数字卡片,每张卡片上都是数字 0 到 9。 小E准备用这些卡片来拼一
	些数,他想从 1 开始拼出正整数,每拼一个, 就保存起来,卡片就不能用来拼其它数
	了。 小E想知道自己能从 1 拼到多少。举个栗子:当小E有 30 张卡片,其中 0 到 9 
	各 3 张,则小E可以拼出 1 到 10, 但是拼 11 时卡片 1 已经只有一张了,不够拼
	出 11。 现在小E手里有 0 到 9 的卡片各 1123 张,共 11230 张,请问小E可以从 
	1 拼到多少?

思路:和第十二届第一场的真题几乎一模一样

public class Main {
    public static void main(String[] args) {
        int flag = 0,i;
        for (i = 0;i <= 11230;i ++){   // i<=11230的原因30张牌只能组成1-10,那么11230张牌组成的数一定不会超过11230
            int x = i,num;
            while (x != 0){
                num = x%10;
                if (num == 1)
                    flag++;
                x = x/10;
            }
            if (flag == 1123){
                System.out.println(i);;
                break;
            }
        }
    }
}

第十三届(模拟赛)4.存储空间

题目:小E准备用 125MB 的内存空间开一个数组,数组的每个元素都是 16 位 二进制整数
,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问125MB 的空间可以存储多少
个 16 位二进制整数?
来个提示:1MB = 1024KB, 1KB = 1024B,1B = 8bit(位)
public class Main {
    public static void main(String[] args) {
        System.out.println(125*1024*512);
    }
}

第十三届(模拟赛)5.阶乘的标签

题目:已知 n 的阶乘指的是 n∗(n−1)∗(n−2)∗...∗2∗1的值。
举个栗子:7!的阶乘为 7∗6∗5∗4∗3∗2∗1=5040。
设一个正整数的“标签”为:将这个数去掉尾部所有的 0 直到第一个不是 0 的数,将其最后
 6位作为“标签”。
 例如,5040 的标签为 000504。现请你计算出 1325476 的阶乘的“标签”。

思路:

第十三届(模拟赛)6.红鲤鱼与绿鲤鱼与驴

题目:兰大有善口技者,名曰GJX,能颂红鲤鱼与绿鲤鱼与驴。你若说1,他便回hongliyu
,你若说2,他便回lvliyu,你若说3,他便回lv。现在,你说出了一串只包含1、2、3的数
字,请你告诉我们,GJX回答了什么?
输入描述:
一行,一个由数字组成的字符串。
输出描述:
一行,一个字符串,代表GJX的回答。
示例1
输入
123123
输出
hongliyulvliyulvhongliyulvliyulv

思路:按要求写程序就完事了

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String one = "hongliyu";
        String two = "lvliyu";
        String three = "lv";
        String num = scanner.next();

        for (int i = 0; i < num.length(); i ++){
            if (num.charAt(i) == '1')
                System.out.print(one);
            if (num.charAt(i) == '2')
                System.out.print(two);
            if (num.charAt(i) == '3')
                System.out.print(three);
        }
    }
}

第十三届(模拟赛)7.日历中的数字

题目:ElemenT马上就要毕业了,他打开日历看了看时间。发现日历上的日期都是
2017-04-04这样的格式的,月和日如果不足2位数,前面都会补充0。给定一个年份和月份,
ElemenT把那个月的日期都按上述格式写到纸上,他现在想知道某种数字出现了多少次。
示例1
输入
2017 4 4
2000 1 0
输出
33
136
说明
第一组样例中,日中有数字4的为2017-04-04,2017-04-14,2017-04-24,4月一共有30天,
因为月份中有4,所以数字4一共出现了30 + 3 = 33次  

思路:

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

孔表表uuu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值