没有合适的资源?快使用搜索试试~ 我知道了~
蓝桥杯历届试题及答案(2015).docx
需积分: 5 0 下载量 112 浏览量
2024-05-09
22:07:10
上传
评论
收藏 283KB DOCX 举报
温馨提示
试读
39页
蓝桥杯是由中国教育部主管、中国计算机学会主办的全国性计算机科学比赛,旨在选拔和培养优秀的计算机科学人才。蓝桥杯大赛包括个人赛和团体赛两个阶段,分为省赛、预选赛和总决赛三个阶段。个人赛包括初赛和复赛两个阶段,初赛为网上测试,复赛为线下笔试;团体赛则为线下模拟开发比赛。 在比赛中,考生需根据比赛要求和规则完成程序设计、算法设计等任务,通过比赛来检验自己的编程能力和创新能力。蓝桥杯大赛题目难度较高,覆盖面广,包括C/C++、Java、Python等多种编程语言,涵盖了数据结构、算法设计、计算机网络、数据库等多个计算机领域。
资源推荐
资源详情
资源评论
2
核桃的数量
问题描述
小张是软件项目经理,他带领 3 个开发组。工期紧,
今天都在加班呢。为鼓舞士气,小张打算给每个组发
一袋核桃(据传言能补脑)。他的要求是:
1. 各组的核桃数量必须相同
2. 各组内必须能平分核桃(当然是不能打碎的)
3. 尽量提供满足1,2 条件的最小数量(节约闹革命嘛)
输入格式
输入包含三个正整数 a, b, c,表示每个组正在加班的
人数,用空格分开(a,b,c<30)
输出格式
输出一个正整数,表示每袋核桃的数量。
样例输入 1
2 4 5
样例输出 1
20
样例输入 2
3 1 1
样例输出 2
3
import java.io.*;
public class Main {
public static void main(String[] args) throws
IOException {
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));
String str[] = br.readLine().split(" ");
int[] arr = new int[3];
for (int a = 0; a < arr.length; a++) {
arr[a] = Integer.parseInt(str[a]);
}
for (int a = 1; a < 27000; a++) {
if (a % arr[0] == 0 && a % arr[1] == 0 &&
a % arr[2] == 0) {
System.out.print(a);
break;
}
}
}
}
打印十字图
问题描述
小明为某机构设计了一个十字型的徽标(并非红十字
会啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
对方同时也需要在电脑 dos 窗口中以字符的形式输
出该标志,并能任意控制层数。
输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入 1
1
样例输出 1
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
样例输入 2
3
样例输出 2
..$$$$$$$$$$$$$..
..$...........$..
3
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
提示:请仔细观察样例,尤其要注意句点的数量和输
出位置。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
fd(sc.nextInt());
}
public static void fd(int n){
int len=5+4*n;
String a[][]=new String[len][len];
int b=len/2;
for(int i=0;i<len;i++){
for(int j=0;j<len;j++){
a[i][j]=".";
}}
for(int i=b-2;i<b+2;i++){
a[i][b]="$";
a[b][i]="$";
}
for(int m=0;m<n;m++){
for(int i=b-2-2*m;i<(b+3+2*m);i++){
a[b - (4+m*2)][i] = "$";
a[b + (4+m*2)][i] = "$";
a[i][b - (4+m*2)] = "$";
a[i][b + (4+m*2)] = "$";
}
}
for(int m=0;m<n;m++){
for (int i = b - (3+m*2); i <= b + 3+m*2; i++)
{
a[b - (2+m*2)][i] = "$";
a[b + 2+m*2][i] = "$";
a[i][b + 2+m*2] = "$";
a[i][b - (2+m*2)]= "$";
}
a[b - (2+m*2)][b - (1+m*2)] = ".";
a[b - (2+m*2)][b + 1+m*2] = ".";
a[b + 2+m*2][b - (1+m*2)] = ".";
a[b + 2+m*2][b + 1+m*2] = ".";
a[b - (1+m*2)][b - (2+m*2)] = ".";
a[b + 1+m*2][b - (2+m*2)] = ".";
a[b - (1+m*2)][b + 2+m*2] = ".";
a[b + 1+m*2][b + 2+m*2] = ".";
}
for (int i= 0; i < len; i++) {
for (int j = 0; j < len; j++) {
System.out.print(a[i][j]);
}
System.out.println();
}
}
}
带分数
问题描述
100 可以表示为带分数的形式:100 = 3 + 69258 / 714。
还可以表示为:100 = 82 + 3546 / 197。
注意特征:带分数中,数字 1~9 分别出现且只出现一
次(不包含 0)。
类似这样的带分数,100 有 11 种表示法。
输入格式
从标准输入读入一个正整数 N (N<1000*1000)
输出格式
程序输出该数字用数码 1~9 不重复不遗漏地组成带
分数表示的全部种数。
注意:不要求输出每个表示,只统计有多少表示法!
样例输入 1
4
100
样例输出 1
11
样例输入 2
105
样例输出 2
6
import java.util.Scanner;
/**
* http://lx.lanqiao.org/problem.page?gpid=T26
* Created by revintec on 14-5-5.
*/
public class Main{
static int getBits(int k){
int bits=0;
while(k>0){
int a=k%10;k/=10;
if(a==0) return -1;
int b=1<<a;
if((bits&b)!=0) return -1;
bits|=b;
}return bits;
}
static int getBits2(int b){
int lo=9;
for(int i=1;i<1<<10;i<<=1)
if((b&i)!=0) --lo;
return lo;
}
public static void main(String[] args){
// System.clearProperty("m.TEST");
Scanner
sc=System.getProperty("m.TEST")==null?new
Scanner(System.in):
new Scanner("999988");
int sx=sc.nextInt();
int[] ts={0,
10,
100,
1000,
10000,
100000,
1000000,
10000000,
100000000,
1000000000,
};
int so=0;
for(int a=1;a<sx;++a){
int bits=getBits(a);
if(bits==-1) continue;
for(int b=1;;++b){
int bts=getBits(b);
if((bits&bts)!=0) continue;
bts|=bits;
long c=b*(sx-a);
if(c>=ts[getBits2(bts)]) break;
if((getBits((int)c)^bts)==1022)
++so;
}
}System.out.println(so);
}
}
剪格子
问题描述
如下图所示,3 x 3 的格子中填写了一些整数。
+--*--+--+
|10* 1|52|
+--****--+
|20|30* 1|
*******--+
| 1| 2| 3|
+--+--+--+
我们沿着图中的星号线剪开,得到两个部分,每个部
分的数字和都是 60。
本题的要求就是请你编程判定:对给定的 m x n 的格
子中的整数,是否可以分割为两个部分,使得这两个
区域的数字和相等。
如果存在多种解答,请输出包含左上角格子的那个区
域包含的格子的最小数目。
如果无法分割,则输出 0。
输入格式
程序先读入两个整数 m n 用空格分割 (m,n<10)。
5
表示表格的宽度和高度。
接下来是 n 行,每行 m 个正整数,用空格分开。每
个整数不大于 10000。
输出格式
输出一个整数,表示在所有解中,包含左上角的分割
区可能包含的最小的格子数目。
样例输入 1
3 3
10 1 52
20 30 1
1 2 3
样例输出 1
3
样例输入 2
4 3
1 1 1 1
1 30 80 2
1 1 1 100
样例输出 2
10
import java.util.Scanner;
public class Main{
static int sum,half,m,n;
static int[][] map;
static boolean[][] flag;
static int count=100;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
m=sc.nextInt();
map=new int[m][n];
flag=new boolean[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++){
map[i][j]=sc.nextInt();
sum+=map[i][j];
}
if(sum%2!=0)
System.out.println(0);
else{
half=sum/2;
dfs(0,0,1,0);
System.out.println(count==100?0:count);
}
}
private static void dfs(int i, int j, int step,int s) {
if(i<0 || i>=m || j<0 || j>=n ){
return;
}
if(flag[i][j]==true)
return;
if(s>half){
flag[i][j]=false;
return;
}
else{
s+=map[i][j];
flag[i][j]=true;
if(s==half){
if(step<count)
count=step;
}
else{
dfs(i+1,j,step+1,s);
dfs(i,j+1,step+1,s);
dfs(i-1,j,step+1,s);
dfs(i,j-1,step+1,s);
flag[i][j]=false;
}
}
}
}
错误票据
问题描述
某涉密单位下发了某种票据,并要在年终全部收回。
每张票据有唯一的 ID 号。全年所有票据的 ID 号是连
续的,但 ID 的开始数码是随机选定的。
因为工作人员疏忽,在录入 ID 号的时候发生了一处
错误,造成了某个 ID 断号,另外一个 ID 重号。
剩余38页未读,继续阅读
资源评论
imcholl
- 粉丝: 6659
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功