蓝桥杯-第七届蓝桥杯C语言A组/B组/C组-Python题解

目录

网友年龄

生日蜡烛

密码脱落

最大比例

煤球数目

平方怪圈

冰雹数


网友年龄

某君新认识一网友。

当问及年龄时,他的网友说:

“我的年龄是个2位数,我比儿子大27岁,

如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄”

请你计算:网友的年龄一共有多少种可能情况?

提示:30岁就是其中一种可能哦.

请填写表示可能情况的种数。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

def juage(x):
    x=str(x)
    y=x[::-1]
    x=int(x)
    y=int(y)
    if x-y==27:
        return True
    else:
        return False

ans=0
for i in range(10,100):
    if juage(i):
        ans+=1
print(ans)

生日蜡烛

某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。

现在算起来,他一共吹熄了236根蜡烛。

请问,他从多少岁开始过生日party的?

请填写他开始过生日party的年龄数。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

flag=False
for i in range(1,121):
    sum=0
    for j in range(i,121):
        sum+=j
        if sum==236:
            print(i)
            flag=True
            break
    if flag:
        break

密码脱落

X星球的考古学家发现了一批古代留下来的密码。

这些密码是由A、B、C、D 四种植物的种子串成的序列。

仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。

由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。

你的任务是:

给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。

输入一行,表示现在看到的密码串(长度不大于1000)

要求输出一个正整数,表示至少脱落了多少个种子。

例如,输入:

ABCBA

则程序应该输出:

0

再例如,输入:

ABDCDCBABC

则程序应该输出:

3

string=input()
i=0
j=len(string)-1

ans=0
while i!=j:
    if string[i]!=string[j]:
        ans+=1
    i+=1
    if i==j:
        break
    else:
        j-=1
if len(string)%2==0:
    ans-=1
print(ans)

最大比例

X星球的某个大奖赛设了M级奖励。每个级别的奖金是一个正整数。

并且,相邻的两个级别间的比例是个固定值。

也就是说:所有级别的奖金数构成了一个等比数列。比如:

16,24,36,54

其等比值为:3/2

现在,我们随机调查了一些获奖者的奖金数。

请你据此推算可能的最大的等比值。

输入格式:

第一行为数字 N (0<N<100),表示接下的一行包含N个正整数

第二行N个正整数Xi(Xi<1 000 000 000 000),用空格分开。每个整数表示调查到的某人的奖金数额

要求输出:

一个形如A/B的分数,要求A、B互质。表示可能的最大比例系数

测试数据保证了输入格式正确,并且最大比例是存在的。

例如,输入:

3

1250 200 32

程序应该输出:

25/4

再例如,输入:

4

3125 32 32 200

程序应该输出:

5/2

再例如,输入:

3

549755813888 524288 2

程序应该输出:

4/1

n=int(input())
number_list=list(map(int,input().split()))
number_list.sort()
def gcd(a,b):
    return a if b==0 else gcd(b,a%b)
a,b=0,0
max_value=0
for i in range(len(number_list)-1):
    if number_list[i+1]/number_list[i]>max_value:
        max_value=number_list[i+1]/number_list[i]
        a=number_list[i+1]
        b=number_list[i]
temp=gcd(a,b)
a/=temp
b/=temp
print('{}/{}'.format(int(a),int(b)))

煤球数目

有一堆煤球,堆成三角棱锥形。具体:

第一层放1个,

第二层3个(排列成三角形),

第三层6个(排列成三角形),

第四层10个(排列成三角形),

....

如果一共有100层,共有多少个煤球?

请填表示煤球总数目的数字。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

diff_number=2
ans=1
start=1
for i in range(2,101):
    start+=diff_number
    diff_number+=1
    ans+=start
print(ans)

平方怪圈

如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。

对新产生的正整数再做同样的处理。

如此一来,你会发现,不管开始取的是什么数字,

最终如果不是落入1,就是落入同一个循环圈。

请写出这个循环圈中最大的那个数字。

请填写该最大数字。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

n=16
max_value=-10**10
while True:
    n=str(n)
    sum=0
    for i in range(len(n)):
        sum+=int(n[i])**2
    if sum==max_value:
        break
    if sum>max_value:
        max_value=sum
    n=sum
print(max_value)

冰雹数

任意给定一个正整数N,

如果是偶数,执行: N / 2

如果是奇数,执行: N * 3 + 1

生成的新的数字再执行同样的动作,循环往复。

通过观察发现,这个数字会一会儿上升到很高,

一会儿又降落下来。

就这样起起落落的,但最终必会落到“1”

这有点像小冰雹粒子在冰雹云中翻滚增长的样子。

比如N=9

9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1

可以看到,N=9的时候,这个“小冰雹”最高冲到了52这个高度。

输入格式:

一个正整数N(N<1000000)

输出格式:

一个正整数,表示不大于N的数字,经过冰雹数变换过程中,最高冲到了多少。

例如,输入:

10

程序应该输出:

52

再例如,输入:

100

程序应该输出:

9232

#题目样例有问题
n=int(input())
max_value=-10**10
while n!=1:
    if n%2==0:
        n//=2
    else:
        n=n*3+1
    if n>max_value:
        max_value=n
print(max_value)

猜你喜欢

转载自blog.csdn.net/Talantfuck/article/details/124568142