蓝桥杯题解(三)

Problem 1

基础练习 查找整数

题目链接

资源限制

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

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入格式

第一行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

输出格式

如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

样例输入

6
1 9 4 8 3 9
9

样例输出

2

数据规模与约定

1 <= n <= 1000。

分析

在数组种挨个找出所要的数字,找到后把位置输出即可。

标程

C++:

#include<map>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<iomanip> 
#include<cstring>
#include<iterator>
#include<iostream>
#include<algorithm>
#define R register 
#define LL long long 
#define pi 3.14159265358979323
using namespace std;

int number[1010];

int main(){
	int N;
	scanf("%d", &N);
	for(R int i = 0; i < N; ++ i){
		scanf("%d", &number[i]);
	} 
	int search_number;
	scanf("%d", &search_number);
	for(R int i = 0; i < N; ++ i){
		if(search_number == number[i]){
			printf("%d", i + 1);
			return 0;
		}
	}
	printf("-1");
	return 0;
} 

Python:

N = int(input())
number1 = input().split()
number = []
for i in range(0, N):
    number.append(int(number1[i]))
search_number = int(input())
for i in range(0, N):
    if search_number == number[i]:
        print(i + 1)
        break
    if i == N - 1:
        print(-1)

Problem 2

基础练习 杨辉三角形

题目链接

资源限制

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

问题描述

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

下面给出了杨辉三角形的前4行:

1

1 1

1 2 1

1 3 3 1

给出n,输出它的前n行。

输入格式

输入包含一个数n。

输出格式

输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

样例输入

4

样例输出

1
1 1
1 2 1
1 3 3 1

数据规模与约定

1 <= n <= 34。

分析

运用二维数组就可以解决这样的问题,需要知道的就是杨辉三角的公式pascal [n] [m] = pascal [n - 1] [m] + pascal [n - 1] [m - 1]通过上面的公式就能解决。

标程

C++:

#include<map>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<iomanip> 
#include<cstring>
#include<iterator>
#include<iostream>
#include<algorithm>
#define R register 
#define LL long long 
#define pi 3.14159265358979323
using namespace std;

int Pascal[50][50];

int main(){
	for(R int i = 1; i <= 40; ++ i){
		Pascal[i][i] = 1, Pascal[i][1] = 1;
	}
	for(R int i = 2; i <= 40; ++ i){
		for(R int j = 1; j <= i; ++ j){
			Pascal[i][j] = Pascal[i-1][j] + Pascal[i-1][j-1];
		}
	}
	int line;
	scanf("%d", &line);
	for(R int i = 1; i <= line; ++ i){
		for(R int j = 1; j <= i; ++ j){
			printf("%d", Pascal[i][j]);
			if(j != i){
				printf(" ");
			}
		}
		if(i != line){
			printf("\n");
		}
	}
	return 0;
} 

Python:

pascal = [[0] * 40 for _ in range(50)]
pascal[1][1] = 1
for i in range(2, 40):
    for j in range(1, i + 1):
        pascal[i][j] = pascal[i - 1][j - 1] + pascal[i - 1][j]
line = int(input())
for i in range(1, line + 1):
    for j in range(1, i + 1):
        if j == i:
            print(pascal[i][j], end = '\n')
        else:
            print(pascal[i][j], end = ' ')

Problem 3

基础练习 特殊的数字

题目链接

资源限制

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

问题描述

153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。

输出格式

按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

分析

水仙花数,经典题目,循环就可以解决

标程

#include<map>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<iomanip> 
#include<cstring>
#include<iterator>
#include<iostream>
#include<algorithm>
#define R register 
#define LL long long 
#define pi 3.14159265358979323
using namespace std;

inline int pow(int number){
	return number * number * number;
}

int main(){
	for(R int i = 100; i <= 999; ++ i){
		int number = i;
		int number_1, number_2, number_3;
		number_1 = number % 10, number /= 10;
		number_2 = number % 10, number /= 10;
		number_3 = number % 10; 
		if(i == pow(number_1) + pow(number_2) + pow(number_3)){
			printf("%d\n", i);
		}
	} 
	return 0;
} 

Python:

for i in range(1, 10):
    for j in range(0, 10):
        for k in range(0, 10):
            if(i * i * i + j * j * j + k * k * k == 100 * i + 10 * j + k):
                print(100 * i + 10 * j + k)

Problem 4

基础练习 回文数

题目链接

资源限制

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

问题描述

1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

输出格式

按从小到大的顺序输出满足条件的四位十进制数。

分析

四轮循环嵌套模拟即可

标程

C++:

#include<map>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<iomanip> 
#include<cstring>
#include<iterator>
#include<iostream>
#include<algorithm>
#define R register 
#define LL long long 
#define pi 3.14159265358979323
using namespace std;

int main(){
	for(R int i = 1000; i <= 9999; ++ i){
		int number = i;
		int number_1, number_2, number_3, number_4;
		number_1 = number % 10, number /= 10;
		number_2 = number % 10, number /= 10;
		number_3 = number % 10, number /= 10;
		number_4 = number % 10; 
		if(number_1 == number_4 && number_2 == number_3){
			printf("%d\n", i);
		}
	} 
	return 0;
} 

Python:

total = int(input())
for i in range(1, 10):
    for j in range(0, 10):
        for k in range(0, 10):
            for r in range(0, 10):
                for o in range(0, 10):
                    if(i == o and j == r and i + j + k + r + o == total):
                        print(10000 * i + 1000 * j + 100 * k + 10 * r + o)
for i in range(1, 10):
    for j in range(0, 10):
        for k in range(0, 10):
            for r in range(0, 10):
                for o in range(0, 10):
                    for p in range(0, 10):
                        if(i == p and j == o and k == r and i + j + k + r + o + p== total):
                            print(100000 * i + 10000 * j + 1000 * k + 100 * r + 10 * o + p)

猜你喜欢

转载自blog.csdn.net/a1351937368/article/details/105463290