由于自己太菜,所以先从各届蓝桥杯java C组前三题做起,(以后该文章可作为复习笔记使用,仅对我自己!)
题目:Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式.小明设计的样
式为:第1行蓝色,第2行白色,第3行蓝色,第4行白色,....现在小明想知道,从第21行到第50行一共包含了
多少个蓝色的行请你直接提交这个整数,千万不要填写任何多余的内容.
**答案:**
思路:基本的高中数学问题
题目:有些数字的立方的末尾正好是该数字本身.比如: 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);
}
}
题目:无穷的分数,有时会趋向于固定的数字.请计算【图1.jpg】所示的无穷分数,要求四舍五入,精确到小数点
后5位,小数位不足的补0.请填写该浮点数,不能填写任何多余的内容.
**答案:58198**
#include
#include
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));
}
}
题目:小明很喜欢猜谜语.最近,他被邀请参加了X星球的猜谜活动.每位选手开始的时候都被发给777个电
子币.规则是:猜对了,手里的电子币数目翻倍,猜错了,扣除555个电子币,扣完为止.小明一共猜了15条谜
语.战果为: vxvxvxvxvxvxvvx其中v表示猜对了,x表示猜错了.请你计算一下,小明最后手里的电子币数目
是多少.
**答案:58497**
思路:最简单的加减乘除
#include
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;
}
题目:有一堆煤球,堆成三角棱锥形.具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成
三角形),第四层10个(排列成三角形) ... ....如果一共有100层,共有多少个煤球?请填表示煤球总数目
的数字.注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字.
**答案:171700**
思路:递归数列
#include
#include
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;
}
}
题目:如果把一个正整数的每一位都平方后再求和,得到一个新的正整数.对新产生的正整数再
做同样的处理.如此一来,你会发现,不管开始取的是什么数字,最终如果不是落入1,就是落
入同一个循环圈.请写出这个循环圈中最大的那个数字.请填写该最大数字.注意:你提交的应该
是一个整数,不要填写任何多余的内容或说明性文字.
**答案:145**
*思路:*重点是把正整数拆分,即23-27行
#include
#include
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;
}
}
题目:小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候
经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。这不,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
题目: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;
}
}
题目: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);
}
}
题目:小明被不明势力劫持。后被扔到x星站再无问津。小明得知每天都有飞船飞往地球,但
需要108元的船票,而他却身无分文。他决定在x星战打工。好心的老板答应包食宿,第1天
给他1元钱。并且,以后的每一天都比前一天多2元钱,直到他有足够的钱买票。请计算一下
,小明在第几天就能凑够108元,返回地球。要求提交的是一个整数,表示第几天。请不要提
交任何多余的内容。
**答案:11**
思路:运用高中数列知识即可
题目: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;
}
}
}
}
}
}
}
}
题目:仔细寻找,会发现:在下面的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
题目:小明对数位中含有 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);
}
}
题目:小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。当他面对
一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块矩形,
然后再切割剩下的矩形材料,直到全部切为正方形为止。例如,对于一块两边分别为
5 和 3 的材料(记为 5 × 3),小明会依次切出3 × 3、 2 × 2、 1 × 1、
1 × 1 共 4 个正方形。现在小明有一块矩形的材料,两边长分别是 2019 和 324
。请问小明最终会切出多少个正方形?
**答案:21**
题目:一个字符串的非空子串是指字符串中长度至少为1 的连续的一段字符组成的串。
例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共7 个。
注意在计算时,只算本质不同的串的个数。
请问,字符串0100110001010001 有多少个不同的非空子串?
**答案:**
思路:滑动窗口
在这里插入代码片
题目:对于一个整数,能整除这个整数的数称为这个数的约数。
例如: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);
}
}
题目:小蓝要为一条街的住户制作门牌号。
这条街一共有 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);
}
}
题目:小蓝每天都锻炼身体。 正常情况下,小蓝每天跑 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题),由于蓝桥杯杯赛直播中说到,时间太久远的真题参考性不大,因此下面的题从第八届开始做起。
题目:我们知道第一个质数是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);
}
题目:由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。这个法术
需要用到他手中的49张法术符,上面分别写着1至49这49个数字。法术一共持续7周,
每天小明都要使用一张法术符,法术符不能重复使用。
每周,小明施展法术产生的能量为这周7张法术符上数字的中位数。法术施展完7周
后,求雨将获得成功,降雨量为7周能量的中位数。
由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多少?
**答案:34**
题目:图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时 针旋转 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();
}
}
}
题目:如下图所示,小明用从 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+" ");
}
}
}
题目:小蓝给学生们组织了一场考试,卷面总分为 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));
}
}
题目:到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
}
}
题目:已知大写字母A的ASCII码值为65,那么大写字母L的ASCII码为多少
答案:76
思路:当时在考场想不起来ASCII是怎么排列的了直接用C++ 发现 ‘A’ + 1 = B 所以可知是顺序排列
#include
using namespace std;
int main (){
char s = 'A'+1;
cout << s;
return 0;
}
题目:小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位
二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问
256MB 的空间可以存储多少个 32 位二进制整数?
题目:小蓝有很多数字卡片,每张卡片上都是数字 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
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;
}
题目:小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以
1000000007 的余数,会得到不同的数。
小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后
再除以 1000000007 后的余数为 999999999。如果存在,请在答案中提交这个数;
如果不存在,请在答案中提交 0。
答案:17812964
思路:直接在C++中开long long 进行计算
#include
using namespace std;
int main (){
for (long long i = 1; i <= 1000000007; i++){
if ((i*2021)%1000000007 == 999999999){
cout << i ;
break;
}
}
return 0;
}
题目:小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图
中的最短路径。
小蓝的图由 2021 个结点组成,依次编号 1 至 2021。
对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点
之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条
长度为 a 和 b 的最小公倍数的无向边相连。
例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无
向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。
请计算,结点 1 和结点 2021 之间的最短路径长度是多少。
提示:建议使用计算机编程解决问题。
题目:小蓝要和朋友合作开发一个时间显示的网站。在服务器上,朋友已经获取
了当前的时间,用一个整数表示,值为从 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]);
}
}
题目:你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意
小于等于 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 的所有重量。
题目:下面的图形是著名的杨辉三角形:
如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下
数列:
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。
题目:给定序列 (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。
题目:我们把一个能被表示成某个整数的平方的数称为完全平方数。
举个栗子: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);
}
}
题目:香港回归是指中华人民共和国政府决定在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
题目:小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;
}
}
}
}
题目:小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);
}
}
题目:已知 n 的阶乘指的是 n∗(n−1)∗(n−2)∗...∗2∗1的值。
举个栗子:7!的阶乘为 7∗6∗5∗4∗3∗2∗1=5040。
设一个正整数的“标签”为:将这个数去掉尾部所有的 0 直到第一个不是 0 的数,将其最后
6位作为“标签”。
例如,5040 的标签为 000504。现请你计算出 1325476 的阶乘的“标签”。
思路:
题目:兰大有善口技者,名曰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);
}
}
}
题目: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次
思路: