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)))

    

 

Python求特别数的和

样题2:特别数的和(编程大题)

【问题描述】

小明对数位中含有2、0、1、9的数字很感兴趣(不包括前导0),在1到40中这样的数包括1、2、9、10至32、39和40,共28个,他们的和是574。

请问,在 1 到 n 中,所有这样的数的和是多少?

【输入格式】

输入一行包含一个整数 n。

【输出格式】

输出一行,包含一个整数,表示满足条件的数的和。

【样例输入】

40

【样例输出】

574

while True:
    n=eval(input())
    count=0
    for i in range(1,n+1):
        for j in str(i):
            if j in ['2','0','1','9']:
                count+=i
                break
    print(count)

 

Python 实现核桃分配(求最小公倍数)

def findMax(a,b,c):
    maxNum = 0
    if(a>b):
        maxNum = a
    else:
        maxNum = b
    if(c>maxNum):
        maxNum = c
    return maxNum

while True:
    a,b,c = map(int,input().split())
    d = findMax(a,b,c)
    e=t=1
    while True:
        t = e*d
        if(t%a==t%b==t%c):
            print(t)
            break
        e+=1
小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:
1.  各组的核桃数量必须相同
2.  各组内必须能平分核桃(当然是不能打碎的)
3.  尽量提供满足1,2条件的最小数量(节约闹革命嘛)

输入
输入包含三个正整数a,  b,  c,表示每个组正在加班的人数,用空格分开(a,b,c< 30)
输出
输出一个正整数,表示每袋核桃的数量。