ASCII 码将每个字符对应到一个数值(编码),用于信息的表示和传输。在 ASCII 码中,英文字母是按从小到大的顺序依次编码的,例如:字母 A 编码是 65, 字母 B 编码是 66,字母 C 编码是 67,请编码为 80 的是哪个字母?
答案
P
请问在 1900 到 2020 中,有多少个质数。
用最简单的遍历做就行
答案
16
有一棵二叉树,有2021个叶结点。
请问。这棵树至少有多少个结点?
答案:
4021
Fibonacci序列按照如下公式定义:
F[1] = 1
F[2] = 1
F[i] = F[i-1] + F[i-2] (i>2)
前几个 Fibonacci 数为 1, 1, 2, 3, 5, 8, 13, 21。
请问,前100个 Fibonacci 数中,有多少个数是 3 的倍数?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
代码:
import math
sumvalue = 0
dp = [0 for i in range(200)]
dp[1],dp[2]=1,1
sumvalue=0
for i in range(3,101):
dp[i] = dp[i-1]+dp[i-2]
if(dp[i]%3==0):
sumvalue+=1
print(sumvalue)
其实也可以通过规律得到,因为能够index整除4的数就能整除3
答案:
25
一个身份证号码有 18 位数字或字母组成。其中前17位必须是数字,最后一位可能是数字或字母X。
身份证号码满足一定的校验规则。
令身份证号从右到左依次标号为 1 到 18,其中标号为 i 的位的位权设置为 2^(i-1) mod 11 (2的i-1次方除以 11 的余数)。
将每一位的数值乘以位权后相加,得到的结果除以 11 的余数应当为 1。其中最后一位(标号为1)中如果出现字母 X,看成数字 10。
例如,如果一个人的身份证号为 34052419800101001X,则:
标号为 1 的位,位权 1,数值 X,即 10,相乘得 10。
标号为 2 的位,位权 2,数值 1,相乘得 10。
标号为 3 的位,位权 4,数值 0,相乘得 0。
标号为 4 的位,位权 8,数值 0,相乘得 0。
计算器也可以做出来的题,大家可以试下,下面的代码可以算出1~17位的加权和为2,于是答案就是X
str1 = input()
print(len(str1))
dp = [0 for i in range(30)]
for i in range(18):
dp[i] = (2 ** (i)) % 11
sumvalue = 0
for i in range(18):
alpha = str1[17 - i]
if (alpha == 'X'):
quan = 10
else:
quan = int(alpha) - int('0')
sumvalue += (quan * dp[i])
print(sumvalue % 11)
可以将110101202102219990输入进去,得到是4,因为最后一位位权是1,所以最后一位是8的话4+8%11=1
答案:
8
小蓝在商店买文具。
一支钢笔 x 元,小蓝买了 a 支。
一个笔记本 y 元,小蓝买了 b 本。
请问,小蓝一共需要支付多少钱?
输入格式
输入四行。
第一行包含一个整数 x。
第二行包含一个整数 a。
第三行包含一个整数 y。
第四行包含一个整数 b。
输出格式
输出一个整数,表示答案。
样例输入
5
2
1
6
样例输出
16
样例输入
2
0
2
1
样例输出
2
数据规模和约定
对于所有评测用例,0 <= x, a, y, b <= 100。
x = int(input())
a = int(input())
y = int(input())
b = int(input())
print(a*x+y*b)
给定一个单词,请将这个单词的首字母大写,后面的所有字母小写。
输入格式
输入一行包含一个字符串,表示给定的单词。
输出格式
输出变换后的单词。
样例输入
hello
样例输出
Hello
样例输入
WORLD
样例输出
World
样例输入
LanQiao
样例输出
Lanqiao
数据规模和约定
对于所有评测用例,单词的长度不超过 100,单词中只包含大小写英文字母。
简单题,不多说
str1 = input()
str1=str1.lower()
str1=list(str1)
str1[0]=chr(ord(str1[0])+(ord('A')-ord('a')))
print("".join(str1))
小Hi正在研究一种特殊的栈。这种栈的元素既可以从栈顶出栈,也可以从栈底出栈。(进栈还是只能从栈顶进栈)
已知入栈的序列是1~N的一个排列,请你判断出栈序列能否是1, 2, 3, … N?
输入格式
输入包含多组数据。
输入第一行包含一个整数T,代表测试数据的组数。
以下每组数据占据2行。
第一行包含一个整数N。
第二行包含N个整数,整数中由空格隔开。表示入栈序列。
输出格式
对于每组数据输出YES或者NO,代表出栈序列能否是1, 2, 3, … N。
样例输入
2
5
2 4 1 3 5
5
4 3 1 5 2
样例输出
YES
NO
数据规模和约定
对于30%的评测用例,1 <= N <= 10
对于80%的评测用例,1 <= N <= 10000
对于所有评测用例,1 <= N <= 100000, 1 <= T <= 10。
不敢相信自己这题用模拟做出来了,可能有些错误,但是思路应该是对的,欢迎大家改错
代码:
n = int(input())
while(n>0):
m=int(input())
stack=list(map(int,input().split()))
stack=stack[::-1] #倒过来
now =[]
current=1
flag=0 #flag作为标记为
while(current<=m):
if(len(stack)<=0):
flag=1
break
if(len(now)==0):
now.append(stack.pop())
while(now[-1]!=current and now[0]!=current):
now.append(stack.pop())
if(now[-1]==current):
now.pop(-1)
elif(now[0]==current):
now.pop(0)
current+=1
print(current)
if(flag==1):
print("NO")
else:
print("YES")
n-=1
给定一个序列 S = (s[1], s[2], …, s[n]),一个位置 p 上的变化度是指以这个位置为中心的相邻的 5 个元素的最大值与最小值的差,即 s[p-2], s[p-1], s[p], s[p+1], s[p+2] 中最大值与最小值的差。
一个序列总共有 n-4 个变化度,位置 1, 2, n-1, n 没有变化度。
例如,对于下面的序列 (1, 0, 4, 8, 5, 7, 6),总共有 3, 4, 5 三个位置有变化度,分别为 8, 8, 4。
给定一个序列,请求出这个序列的变化度。
输入格式
输入的第一行包含一个整数 n,表示给定的序列长度。
第二行包含 n 个整数 s[1], s[2], …, s[n],表示给定的序列。
输出格式
输出一行,包含 n-4 个非负整数,分别表示每个位置的变化度。
样例输入
7
1 0 4 8 5 7 6
样例输出
8 8 4
数据规模和约定
对于所有评测用例,5 <= n <= 1000,0 <= s[i] <= 1000000。
这道题一开始以为得用前缀和什么的,但是一看数据范围,时间复杂度也就1000*5 狂喜,发现暴力就能做出来,就直接暴力了
代码:
n = int(input())
list1 = list(map(int,input().split()))
for i in range(2,len(list1)-2):
minvalue = float('inf')
maxvalue = - float('inf')
for j in range(i-2,i+3):
maxvalue =max(list1[j],maxvalue)
minvalue =min(list1[j],minvalue)
print(maxvalue-minvalue,end=" ")
给定两个序列 A=(a_1, a_2, …, a_n) 和 B=(b_1, b_2, …, b_m), 它们的一个公共子序列是指从两个序列中分别取出相同个数的元素,按照原来的顺序排列后,对应位置的数值相等。
例如,对于序列 A=(3, 2, 7, 6, 7) 和 B=(2, 3, 5, 7),可以在序列 A 中取出第 2, 3 个元素,在序列 B 中取出第 1, 4 个元素,值都是 2, 7,因此 2, 7 是一个公共子序列,在 A 中取第 2, 3 个元素和在 B 中取 1, 4 个元素是这个公共子序列的一种取法。
在这两个序列中,有 4 中取法可以取出长度为 2 的公共子序列,例如
1. 在 A 中取第 1, 3 个元素,在 B 中取 2, 4 个元素;
1. 在 A 中取第 1, 5 个元素,在 B 中取 2, 4 个元素;
1. 在 A 中取第 2, 3 个元素,在 B 中取 1, 4 个元素;
1. 在 A 中取第 2, 5 个元素,在 B 中取 1, 4 个元素。
给定两个序列,请问有多少种取法可以取出长度为 k 的公共子序列。
输入格式
输入第一行包含三个整数 n, m, k,分别表示序列 A 的长度、序列 B 的长度和公共子序列的长度。
第二行包含 n 个整数 a_1, a_2, …, a_n,表示给定的 A 序列。
第三行包含 m 个整数 b_1, b_2, …, b_m,表示给定的 B 序列。
输出格式
输出一行,包含一个整数,表示长度为 k 的公共子序列的数量,答案可能很大,请输出答案除以 1000007 的余数。
样例输入
5 4 2
3 2 7 6 7
2 3 5 7
样例输出
4
数据规模和约定
对于 30% 的评测用例,1 <= n, m <= 20。
对于 50% 的评测用例,1 <= n, m <= 100。
对于所有评测用例,1 <= n, m <= 1000, 1 <= k <= 10, 0 <= a_i <= 100。
这道题暂时不想到什么好的解法,感觉想kmp算法能做出来,但是感觉又不能用,