Python实现栅格打印

资源限制
时间限制:1.0s   内存限制:512.0MB
问题描述
  编写一个程序,输入两个整数,作为栅格的高度和宽度,然后用“+”、“-”和“|”这三个字符来打印一个栅格。
输入格式:输入只有一行,包括两个整数,分别为栅格的高度和宽度。
输出格式:输出相应的栅格。
输入输出样例
样例输入
3 2
样例输出
+-+-+
| | |
+-+-+
| | |
+-+-+
| | |
+-+-+
h,w = map(int,input().split(' '))
if h==0 or w==0:
    print("")
else:
    for i in range(1, h + h + 2):
        for j in range(1, w + 2):
            if i % 2 == 0:
                print("| ", end="")
            else:
                if j == w + 1:
                    print("+", end="")
                else:
                    print("+-", end="")
        print("")

 

Python实现因式分解

资源限制
时间限制:10.0s   内存限制:256.0MB
问题描述
  设计算法,用户输入合数,程序输出若个素数的乘积。例如,输入6,输出2*3。输入20,输出2*2*5。
样例
  与上面的样例输入对应的输出。
例:

数据规模和约定

def factorization(num):
    factor = []
    while num > 1:
        for i in range(num - 1):
            k = i + 2
            if num % k == 0:
                factor.append(str(k))
                num = int(num / k)
                break
    return factor
print("*".join(factorization(int(input()))))

 

  输入数据中每一个数在int表示范围内。

Python实现字符串压缩

资源限制
时间限制:1.0s   内存限制:256.0MB
问题描述
编写一个程序,输入一个字符串,然后采用如下的规则对该字符串当中的每一个字符进行压缩:
(1) 如果该字符是空格,则保留该字符;
(2) 如果该字符是第一次出现或第三次出现或第六次出现,则保留该字符;
(3) 否则,删除该字符。
例如,若用户输入“occurrence”,经过压缩后,字符c的第二次出现被删除,第一和第三次出现仍保留;字符r和e的第二次出现均被删除,因此最后的结果为:“ocurenc”。
输入格式:输入只有一行,即原始字符串。
输出格式:输出只有一行,即经过压缩以后的字符串。
输入输出样例
样例输入
occurrence
样例输出
ocurenc
str = input()
rs,s_count = "",[]
for s in str:
    s_count.append(s)
    if s==' ' or s_count.count(s) in [1,3,6]:
        rs+=s

print(rs)

Python算法提高 9-2 文本加密

资源限制
时间限制:1.0s   内存限制:256.0MB
问题描述
  先编写函数EncryptChar,按照下述规则将给定的字符c转化(加密)为新的字符:”A”转化”B”,”B”转化为”C”,… …”Z”转化为”a”,”a”转化为”b”,… …, “z”转化为”A”,其它字符不加密。编写程序,加密给定字符串。
样例输出
与上面的样例输入对应的输出。
例:
数据规模和约定
  输入数据中每一个数的范围。
例:50个字符以内无空格字符串。

def EncryptChar(c):
    #A的ASCII码是65,a的ASCII码是97
    c_ascii = ord(c)
    if 90>c_ascii>=65 or 122>c_ascii>=97:
        return chr(c_ascii+1)
    elif c_ascii == 90:
        return chr(c_ascii+7)
    elif c_ascii == 122:
        return chr(c_ascii-57)
    else:
        return chr(c_ascii)

words = input()
for word in words:
    print(EncryptChar(word),end="")

 

Python实现蓝桥杯之RP大冒险??

资源限制

时间限制:200ms   内存限制:64.0MB
问题描述
  请尽情使用各种各样的函数来测试你的RP吧~~~
输入格式
  一个数N表示测点编号。
输出格式
  一个0~9的数。
样例输入
0
样例输出
X
{当且仅当输出仅有一个数X且X为0~9的数时你的得分不为零,此时你的得分为系统根据你的输出而计算出的你本次的RP。}
数据规模和约定
  测点编号为1~10,且stdans随机。
究竟使用怎样的函数才能获得较高的RP呢?指数函数?幂函数?斐波那契数?圆周曲线的导数函数?好想尝试一下哦~
这题非常有意思,只要答案控制在0-9,那你肯定有分数的。

import random
n = input()
print(n[random.randint(0,len(n)-1)])

实测分数102分,因为random的原因,每次分数肯定不同,那就真的看人品了~

Python实现01字串

嗯…最近没什么时间做
问题描述

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>
for a in range(2):
    for b in range(2):
        for c in range(2):
            for d in range(2):
                for e in range(2):
                    print("%d%d%d%d%d"%(a,b,c,d,e))

 

Python 实现数列求值

【问题描述】
给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求
第 20190324 项的最后 4 位数字。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个 4 位整数(提示:答案的千位不为 0),在提交答案时只填写这个整数,填写多余的内容将无法得分。

def slqz(n):
    if n in [1,2,3]:
        return 1
    f1,f2,f3,fn=1,1,1,0
    for i in range(4,n+1):
        fn=(f1+f2+f3)%10000
        f1=f2
        f2=f3
        f3=fn
    return fn

print(slqz(20190324))

 

Python实现 字母图形

问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。
n,m = map(int,input().split(' '))
for i in range(n):
    for k in range(i):
        if k < m:
            print(chr(65-k+i),end="")
    for j in range(m-i):
        print(chr(j+65),end="")
    print("")

 

Python实现 斐波那契数列 取余

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

 

问题描述

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。

当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

输入格式
输入包含一个整数n。
输出格式
输出一行,包含一个整数,表示Fn除以10007的余数。

说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。

样例输入
10
样例输出
55
样例输入
22
样例输出
7704
数据规模与约定
1 <= n <= 1,000,000。
def f(n):
    if n in [1,2]:
        return 1
    f1,f2,fn=1,1,0
    for i in range(3,n+1):
        fn = (f1+f2)%10007
        f1 = f2
        f2 = fn
    return fn

n = int(input())
print(f(n))

 

Python实现 找凶手 巴斯维克命案

巴斯维克命案抓住了六个嫌疑犯,他们的口供如下:
A:我不是罪犯
B:A、C中有一个是罪犯
C:A和B说了假话
D:C和F说了假话
E:其他五个人中,只有A和D说了真话
F:我是罪犯
他们中只有一半说了真话,凶手只有一个。
本题可能有多种可能性,即正确答案(找到唯一的凶手)可能有多个,但每一个可能的答案(某一个是凶手)都满足上述口供。
请编程找出可能的凶手输出。
(假设唯一的凶手是A或者D或者E,则输出结果为三行,按字母顺序依次输出)

def a():
    #我不是罪犯
    return people[0]!=1
def b():
    #A,C中有一个是罪犯
    return (people[0]==1 and people[2]==0) or (people[0]==0 and people[2]==1)
def c():
    #A和B说了假话
    return bool(1-a()) and bool(1-b())
def f():
    #我是罪犯
    return people[5]==1
def d():
    #C和F说了假话
    return bool(1-c()) and bool(1-f())
def e():
    #其他五个人中,只有A和D说了真话
    return a() and d() and bool(1-b()) and bool(1-c()) and bool(1-f())

people=[]
for i in range(6):
    count=0
    pc=""
    people.clear()
    for j in range(6):
        people.append(0)
    people[i] = 1

    if a()==True:
        count+=1
        pc+='a,'
    if b()==True:
        count+=1
        pc+='b,'
    if c()==True:
        count+=1
        pc+='c,'
    if d()==True:
        count+=1
        pc+='d,'
    if e()==True:
        count+=1
        pc+='e,'
    if f()==True:
        count+=1
        pc+='f,'
    if count==3:
        print(chr(65+i))

    #print(people)
    #print("排查%s,结果%s,排查项%s"%(str(i),str(count),str(pc)))