精华内容
下载资源
问答
  • 从一到十取名
    千次阅读
    2021-07-29 08:02:56

    四栋楼,要四个名字噢.寓意要说出来哦,谢谢!

    笃行楼

    教学楼可以取名字有\“育才楼”、\“树人楼”、\“扬帆楼”、\“宏志楼”、\“展鹏楼”、\“寄望楼”、\“青云楼”,看看有没有合适的,希望能帮到亲哦。

    取个名字,要有100字左右的理由..尽快,在线等

    容圣楼(能容下圣人的楼。。寓意学校代代有才人出)

    教学楼3栋分别叫: 1,相长楼(教与学是相长的,为师者教人亦为学,求学者不免要为师,没有谁是完全孤立的) 2,善思楼(学当有所取有所不取,一味的接受不是人才.

    我们学校要给办公楼和教学楼命名(高中)要有文化内涵,积极向上的写下名。

    天一楼来自“天行健,君子当自强不息”,出自于《易经·乾卦》。“天行健,君子当自强不息”?就是:作为客观事物的发展,以其“刚建”的品格,自行运动着,大道.

    致远楼 博观楼 博以观物 勤以致远

    什么 博学 致知 立人 等等都可以 关键还要看学校的文化 办公楼、实验楼和综合楼就成为:行政楼、实验楼和综合功能教学楼 三座教学楼:名称还是按照学校的文化底蕴和.

    静远楼撷秀楼思贤楼荣钗楼

    三幢教学楼:低年级、中年级、高年. 我们的学校是艺术特色的,命名最好.

    低年级:星苹果乐园;中年级:学习仙境;高年级:竞智楼 艺术楼:飘香楼 计算机与科学的实验楼:科学的海洋 餐厅:食物多样化 体育馆:友谊第一,比赛第二 行政楼:.

    给十栋楼取名,分别是:四栋教学楼,实验楼,行政楼,食堂,教师公寓,运。

    教学楼:明志楼,致远楼(诸葛亮《诫子书》非淡泊无以明志,非宁静无以致远) 春华楼 秋实楼(《三国志·魏志·邢颙传》:“采庶子之春华;忘家丞之秋实) 实验楼.

    教学楼命名可以结合本校的校园文化,体现学校的优良传统,同时,也符合学生的认知,让学生看到教学楼的名字,就对学校都有一种文化归属感和认同感。

    教学楼命名有哪些,教学楼有幼儿园,小学,中学的教室,老师和校长办公室。

    1 按功能命名:你这座楼是用作音乐教室,就直接叫音乐楼,这样一看就知道这楼是干什么用的。2 按寓意命名:就是赋予好的寓意,譬如:启智楼、思明楼、明德楼……3.

    越多越好,给,实验楼,初中楼,高中楼,男女宿舍取名,越多越好哈

    学校教学楼 善思 实验楼 勤耕 初中楼 春华 高中楼 秋实 男宿舍 飞虎 女宿舍 寒梅

    书馨楼,扬帆楼,求真楼

    我们学校将搬到新校区,有三栋教学楼,一栋图书馆,一栋实验楼,两栋宿舍。

    本人是一名中学教师,觉得校园嘛,还是营造一下学习氛围比较好!!书卷气浓一些. 概而言之,这几个教学楼名包含了做人与为学这两大主题,解决好这两方面问题,人.

    要意义深刻 表达对学校的思念感情

    教学楼 可以叫 明琼楼 走廊可以叫 书香斋

    1.行政楼 2.教学楼 3.理实综合楼 4.艺体馆 5.培训餐旅实训楼 6.报告厅 7.食堂 。

    A楼名 原有名 | 科技办公综合楼 初中教学楼 小学教学楼 食堂 公寓楼 创意名 | 行知楼 |致远楼 |芊芷楼 |广养楼 |枕书楼 B园名.毓秀园 C道路名 位置 |创意名|位置 |创意名 | 进校.

    我们学校有四栋教学楼,其中两栋起了名字,还有两栋教学楼没起名字,请大.

    因为这是一到四年级的教学楼,所以我给这幢取名成长楼。愿同学们健康快乐成长。原名叫“黄色楼”的那幢楼房是五六年级的哥哥姐姐们上课用的教学楼,我帮它取名为.

    要最奇葩最蛋疼的

    飞天楼、人生楼、作业楼

    要求 1三个字 2要体现教学楼特点 3 传统文化与现代教育理念相结合 4读起来。

    名称:思源楼出处:饮水思源含义:教育学生不忘本。

    更多相关内容
  • 风云三年闲话休提,时光列车马上要退回到十三年前了,你坐稳了吗?●时间:公元1997年1997年12月早期,你看得没错,这就是Google——还没正式上线的样子,那时候它叫BackRub。1997年12月后期,因为个笔误,这家...
  • 1. 类名 这类事物的名字,安照大驼峰命名法(每个单词的首字母大写)起名 2. 属性 这类事物具有什么样的特征 3. 方法 这类事物具有什么样的行为
  • 深度学习()-AI起名

    千次阅读 2019-04-19 18:18:24
    循环神经网络主要使用在自然语言处理方面,自然语言处理主要使用的是语言信息,由字和词组成,所以我们一般需要将这些字或者词转为向量,这就不得不提到个概念:词嵌入,即词向量。 词嵌入   在最初做自然语言...

      上文我们介绍了卷积神经网络极其变形 L S T M LSTM LSTM G R U GRU GRU 的原理,我们来讲讲用法。循环神经网络主要使用在自然语言处理方面,自然语言处理主要使用的是语言信息,由字和词组成,所以我们一般需要将这些字或者词转为向量,这就不得不提到一个概念:词嵌入,即词向量。

    词嵌入

      在最初做自然语言处理时,采用 o n e − h o t one-hot onehot 编码来表示一个词,例如一个语料:我喜欢刘德华的歌,分词之后可表示为:我/喜欢/刘德华/的/歌。这里我们有 5 个词,那么使用 o n e − h o t one-hot onehot 编码表示每个词:
        我: [ 1 , 0 , 0 , 0 , 0 ] [1, 0, 0, 0, 0] [1,0,0,0,0]
        喜欢: [ 0 , 1 , 0 , 0 , 0 ] [0, 1, 0, 0, 0] [0,1,0,0,0]
        刘德华: [ 0 , 0 , 1 , 0 , 0 ] [0, 0, 1, 0, 0] [0,0,1,0,0]
        的: [ 0 , 0 , 0 , 1 , 0 ] [0, 0, 0, 1, 0] [0,0,0,1,0]
        歌: [ 0 , 0 , 0 , 0 , 1 ] [0, 0, 0, 0, 1] [0,0,0,0,1]

      这种表示方法简单易懂,但是缺点也很明显,无法表示词与词之间的关系,而且如果语料足够大的话,那么维度就会非常大,给服务器带来很大的负载,同时这么多维度中,却只有一维是可用信息,就会造成很大的维度浪费情况。
      因为 o n e − h o t one-hot onehot 的这种缺点,深度学习一般采用词嵌入的方式,词嵌入就是将一个全部词语数量为维度的高维空间嵌入到一个低维的连续空间中,词嵌入的具体解释可以看看 自然语言处理与词嵌入,我自信我不能比这位博主写的更加通俗易懂,所以这里大家就只能看看这位博主的大作了。
      在 p y t o r c h pytorch pytorch 中,词嵌入是通过函数 n n . E m b e d d i n g ( m , n ) nn.Embedding(m, n) nn.Embedding(m,n) 来实现的,其中 m m m 表示所有的单词数目, n n n 表示词嵌入的维度,对应为一个 [ m , n ] [m, n] [m,n] 的矩阵,例如果有两个词 h e l l o , w o r l d hello, world hello,world,都为五维。对应的矩阵就为 [ 2 , 5 ] [2, 5] [2,5] E m b e d d i n g Embedding Embedding 的输入为 [ b a t c h _ s i z e , m ] [batch\_size, m] [batch_size,m],输出为 [ b a t c h _ s i z e , m , n ] [batch\_size, m, n] [batch_size,m,n]

    	embedding = nn.Embedding(10, 5)  #  10个词,每个词为5维
    	inputs = torch.arange(0, 6).view(3, 2).long()  # 输入三行两列,即三个句子,每个句子有两个词
    	inputs = Variable(inputs)
    	print("输入大小: ", inputs.shape)
    	
    	outputs = embedding(inputs)
    	print("输出大小: ", outputs.shape)   # 输出大小

      得到的输出如下:

    	输入大小:  torch.Size([3, 2])
    	输出大小:  torch.Size([3, 2, 5])

    AI起名

      网上做 A I AI AI 写诗的有很多,基本都是参考陈云老师的《深度学习框架 pytorch入门与实践》,我也根据内容,利用爬取的 92251 92251 92251 首诗,完成了此 d e m o demo demo,但是网上同类型太多,我就不写了,这里我们换种方式,爬取一批姓名来完成 A I AI AI 起名的功能,本次利用爬虫获取 985010 985010 985010 组男孩子的名字,基本囊扩了所有的姓氏。

    数据处理

      在前面了解到,深度学习的数据需要使用相同维度,而名字无法进行分词,为了方便,直接将每个名字当做一个词看待,然后进行处理而考虑到复姓的关系,名字最长可能为 4 4 4,但是为了方便或者出错,在名字后面加上一个终止符 < E N D > <END> <END>,最终组成一个 5 5 5 维向量。

    	import numpy as np
    
    	with open(u"./data/boys.txt", "r", encoding="utf-8") as f:    # 获取所有名字
    	    names = []
    	    for line in f:
    	        names.append(line.strip())
    
    
    	data = []
    	for name in names:
    	    people = list(name) + ["<END>"]  	# 在名字后面加上终止符并转为列表
    	    if len(people) < 5:   				# 如果长度小于5,补齐5位
    	        for i in range(5-len(people)):
    	            people.insert(i, "</s>")
    	    else: 								# 如果长度大于5,截取五位
    	        people = people[: 5]
    	        
    	    data.append(np.array(people))

      可以看看截取之后,出现的信息:

    	data[0]
    

      每一个名字为 5 5 5 维,每维为一个汉字,但是代码是无法识别汉字的,所以我们需要想方法将其转为代码能够处理的数字。

    	words += [word for poetry in data for word in poetry]   # 获取所有汉字
    	words = set(words )										# 去重
    	
    	word2ix = dict((c, i) for i, c in enumerate(words))   	# 字-index
    	ix2word = dict((i, c) for i, c in enumerate(words))  	 # index-字

      将数字与汉字进行映射之后,我们需要将所有词即名字转为词嵌入的模式:

    	name_data = []  # 姓名对应的下标向量化
    	for name in data:
    	    name_txt = [word2ix[ii] for ii in name]  
    	    name_data.append(name_txt)
    	
    	name_data = np.array(name_data)
    
    	name_txt = [ix2word[ii] for ii in name_data[0]] 	# 查看第一个名字
    	print("".join(name_txt))

      输出结果如下所示:

      数据处理完成后,将其封装为 t e n s o r tensor tensor

    	name_data = torch.from_numpy(name_data)
    	dataloader = data.DataLoader(name_data, batch_size=64, shuffle=True, num_workers=1)
    模型构建
    	class NameModel(nn.Module):
    	    def __init__(self, vocab_size, embedding_dim, hidden_dim):  # (所有汉字数,词向量维度,隐藏层维度)
    	        super(NameModel, self).__init__()
    	        
    	        self.hidden_dim = hidden_dim  # 隐藏层
    	        self.embeddings = nn.Embedding(vocab_size, embedding_dim)   # 词表大小/词维度
    	        self.lstm = nn.LSTM(embedding_dim, self.hidden_dim, num_layers=2, batch_first=True)   # [输入维度,输出维度,网络层数]/LSTM
    	        self.linear = nn.Linear(self.hidden_dim, vocab_size)  # 全连接层
    	
    	    def forward(self, input_, hidden=None):   # input_形状  (seq_len, batch_size)
    	        batch_size, seq_len = input_.size() 
    	
    	        if hidden is None:
    	            h_0, c_0 = Variable(torch.zeros(2, batch_size, self.hidden_dim)), Variable(
                torch.zeros(2, batch_size, self.hidden_dim))
    	        else:
    	            h_0, c_0 = hidden
    	
    	        embeds = self.embeddings(input_)
    	        output, hidden = self.lstm(embeds, (h_0, c_0))
    	        output = self.linear(output.view(seq_len * batch_size, -1))
    	        
    	        return output, hidden

      输入的字和词通过 n n . E m b e d d i n g nn.Embedding nn.Embedding 得到相应的词向量,然后利用两层 l s t m lstm lstm 提取到词的隐藏信息,再利用隐藏信息将词分类,得到下一个可能出现的词。同时使用相同方法定义损失函数与优化函数:

    	model = NameModel(len(word2ix), 6, 32)   # 字库长度,词维度,隐藏层大小
    	
    	optimizer = torch.optim.Adam(model.parameters(), 1e-3)  # 优化器
    	criterion = nn.CrossEntropyLoss()  # 损失函数

      同样可以使用 m o d e l . p a r a m e t e r s model.parameters model.parameters 看看模型的参数:

    模型训练

      训练方法与前面也是相同,不多讲,直接上代码。

    	for epoch in range(20): 
    	    epoch_loss = 0 
    	    for i, data in enumerate(dataloader): 
    	        data = data.long()
    	        
    	        optimizer.zero_grad() 
    	        
    	        input_, target = Variable(data[:-1, :]), Variable(data[1:, :])  # 将输入和目标错开
    	        
    	        output, _ = model(input_) 
    	        loss = criterion(output, target.view(-1)) 
    	        loss.backward() 
    	        optimizer.step() 
    	        
    	        epoch_loss += loss.data
    	      
    	    print('epoch: {}, name_loss: {:.6f}'.format(epoch, epoch_loss/len(dataloader)))
    	    
    	    torch.save(model.state_dict(), '%s_%s.pth' % ("./data/name/name", epoch))

      上面将输入和目标错开的原因是,正常情况下,比如第一个名字:“钱煜睿“,我们输入姓:“钱”,下一个正确的字为:“煜”,而“煜”就为姓“钱”的目标值,所以我们直接将同一个名字错开一维即可。因为电脑性能的原因,我这里只是将隐藏层大小设置为 32 32 32,使用了 2 2 2 层网络,训练 20 20 20 次,依然跑了一天一夜,各位童鞋如果自己也想练习此 d e m o demo demo,可根据具体情况设置这些参数与 G P U GPU GPU 加速,我这里模型的损失还是有点大,跟训练次数有一定关系,我这里没有计算准确率,后面补上:

    生成姓名
    	def create_name(model, start_words, ix2word, word2ix):
    	    results = list(start_words)   # 姓
    	    start_word_len = len(start_words)  # 起始长度
    	    inputs = Variable(torch.Tensor([word2ix[results[0]]]).view(1, 1).long())   # 获取第一个词即姓氏
    	    hidden = None
    	     
    	    for i in range(200):
    	        output, hidden = model(inputs, hidden) 
    	        if i < start_word_len:
    	            w = start_words[i]  
    	            inputs = Variable(inputs.data.new([word2ix[w]])).view(1, 1)  # 根据输入的姓预测下一个字
    	        else:
    	            top_index = output.data[0].topk(1)[1][0].item()  # 取出预测中最可能输出的字
    	            w = ix2word[top_index]
    	            results.append(w)
    	            inputs = Variable(inputs.data.new([top_index])).view(1, 1)  # 将输出作为下一次的输入
    	        
    	        if w == "<END>":
    	            break
    	    return results[: -1]
    
    	first_name = "李"
    	result = create_name(model, first_name, ix2word, word2ix)
    	
    	print(''.join(result))

      可以看看我们通过模型生成的名字:

      多生成几次,看看效果:

    总结

      其实神经网络的模型创建和训练都是大同小异,不同的是在自己数据处理与参数的调节,而 A I AI AI 起名还有很多可以补充的,比如说根据性别、生肖、姓名长度来就生成姓名,后续我会慢慢补充。
      

    参考

    1. 陈云:《深度学习框架 pytorch入门与实践》
    2. 廖星宇:《深度学习之pytorch》
    展开全文
  • 前言 昨天在直播中有粉丝问我如何快速的对编程语言入门,我想这个问题是有必要让大家知道...上图中我们可以发现,Python 与 C 语言两者差异并不明显,80% 内容较为类似;我们接下来将会同时学习这些有共同点的知识点

    前言

    昨天在直播中有粉丝问我如何快速的对编程语言入门,我想这个问题是有必要让大家知道的,相必也有很多新手对于如何快速完成编程语言的入门学习很感兴趣,本篇文将会使用 C 语言以及 Python 为例,做出对比,让大家对编程语言的共同基础知识点得以了解,方便大家的学习。

    在此我做了一张图,红色标注为 Python 与 C 语言之间的知识点细微差异(指使用上),蓝色标注为较大差异。

    从上图中我们可以发现,Python 与 C 语言两者差异并不明显,80% 内容较为类似;我们接下来将会同时学习这些有共同点的知识点,不过由于篇幅以及本文重心为快速的完成编程语言知识点的学习,所以不再过多的进行深入讲解,若想系统性且轻松的学习可以阅读我对话模式的 Python 教程以及 C 语言教程,分别是《大话系列之C语言》《大话系列之Python到游戏实战》,同时也有C#教程正在更新《看聊天记录都学不会C#?》,并且C++教程也在计划中。

    欢迎关注我哟~4/14日我还准备开播解答新手问题哟。有问题可以私聊我,我是一个热心博主。

    作者简介

    作者名:1_bit

    简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。

    博客地址:https://i1bit.blog.csdn.net


    一 输出

    此小点系统学习点击《看聊天记录都学不会C语言?太菜了吧(2)我说编程很容易你们不服?跳转
    此小点系统学习点击《看聊天记录都学不会Python到游戏实战?太菜了吧》(1)装载Python神器!亮剑!跳转

    在 Python 与 C 语言中,大多数基础概念相同、用法极其类似,我们先以输出作为例子。python 中使用 print 函数进行输出,而 C 语言使用 printf 函数进行输出,下面贴出两者的使用方式:

    C:

    printf("HelloWorld");
    

    Python:

    print("HelloWorld")
    

    我们从以上的使用方法中肯出,两者极其类似。在编程语言中,或者说在 C 和 Python 中进行基础编程所使用的 printf() 与 print() 其实都是 C 与 Python 所内置的函数,而函数我们可以理解为功能;print 与 printf 都是用于显示,则我们可以理解成 print 与 printf 的功能都是用于显示指定的字符串。字符串在 C 与 Python 之中都可以使用双引号标记,例如“HelloWorld”、“123a31”、“123”、“@!!!!!¥!”等。只要使用了双引号进行标识我们都可以看做是字符串,包括“123”。

    C 与 Python 之中的输出显示分别使用 printf 与 print,其实较为完整的写法应该是在 printf 或 print 后添加一堆圆括号(在编程中所有有功能作用的标点都必须使用英文),printf 与 print 我们称为函数名,我们使用这个函数就直接使用函数名加圆括号即可,圆括号中的内容我们可以称为参数,参数可以理解为做饭时使用拥有做饭功能的电饭锅所加入的米,因为有米才能做饭,在这里有需要显示内容则有指定内容才能显示。在使用 printf 与 print 时,我们在这两个函数的圆括号中传入了我们需要显示的内容,在程序运行时将会显示其内容。

    两者运行后都会在控制台中显示出 HelloWorld:

    在此还要注意一点,在 C 语言中每一句代码结束都需要使用分号进行说明,就像编写文章有标点符号一样,我们需要标点表示一句话的结束;在 Python 中则是使用换行表示这一句代码结束。

    二 变量

    此小点系统学习点击《看聊天记录都学不会C语言?太菜了吧(4)原来我早就会编程了跳转
    此小点系统学习点击《看聊天记录都学不会Python到游戏实战?太菜了吧》(2)在python中加号竟然如此善变跳转

    变量值在程序中用于存储值的容器,例如在一个游戏中使用一个变量存储了当前角色的血量。变量是可以创建多个的,用游戏作为举例,我们可以创建一个变量存储血量、一个变量存储魔法值、一个变量存储怒气值等。C 语言中创建变量需要指定这个变量的存储类型,例如如下代码:

    int a=0;
    

    以上代码表示创建一个变量 a,这个变量 a 是 int 类型的;int 是一个类型修饰符,表示这个变量用于存储整型数据;等于号表示赋值,将等于号右边的值(此处是0),存储至左边的变量 a 中。在此需要注意,a 是变量名称,你可以随意起名(起名也有规则,不过一般情况下不会触发),我们可以创建多个变量。

    在 Python 中创建一个变量不需要指定类型,也不需要添加分号,那么在这里你是否懂的如何在 Python 中创建一个变量了吗?是的,你答对了,例如如下代码:

    a=0
    

    以上则是 python 中创建一个名为 a 的变量,里面所存储的数为 0。

    变量在 C 语言中可以使用 printf进行输出显示其所存储的内容,在 python 语言中可以使用 print 进行变量所存储内容的输出。

    变量输出

    C语言使用 printf 进行变量的内容输出对比 python 较为繁琐,示例如下:

    int a=0;
    printf("%d",a);
    

    以上代码使用了 printf 输出变量 a 中所存储的内容。我们在之前说过,在 printf的圆括号中为指定要输出的内容,在这里使用双引号标识的是 %d,难道会输出 %d 吗?当然不是,在这里 %d 是一个占位符号,表示此处在输出时将会替换成一个值,这个值在双引号后使用逗号进行隔开的第一个值,在这里是变量 a;此时变量 a 表示的是里面所存储的值 0,a 只是这个变量的一个名称,最终将会输出变量 a 所存储的内容。

    我们的变量可以创建多个,在此处我们可以输出多个变量的值,代码如下:

    int a=0;
    int b=10;
    printf("%d %d ",a,b);
    

    此时 printf 中出现了两个 %d,到底这两个 %d 该如何进行输出呢?此时第一个 %d 对应的是双引号后使用逗号所间隔的第一个变量 a 的值,第二个 %d 则会输出双引号后使用逗号间隔的第二个变量 b 的值,如果有多个将会以此类推。

    那 python 是如何对变量进行显示的呢?python 相对于 C 语言来说简单多了,当然也是使用 print,直接使用 print在其圆括号中放入变量即可,示例如下:

    a=10
    b=0
    print(a,b)
    

    如果在 python 中只需要显示一个变量值,那么就填写一个变量就行,多个变量则使用逗号进行间隔。

    C语言变量类型

    在 C 语言中还有多种数据类型,在此以字符类型 char、浮点类型 float 为例:

    int a=0;
    char b='A';
    float tt=3.33;
    printf("%d %c %f ",a,b,tt);
    

    以上代码中,char 为字符类型变量的修饰符,此时变量 b 中存储的是字符数据 A;在 C 语言中字符类型需要 使用单引号标识;之后使用了 float 创建了一个变量 tt,存储的值是 3.33,我们可以理解 float 为小数。

    在输出语句中我们发现了几个不同,出现了 %c 与 %f,其实 %d、%c、%f 我们都称为占位符,%d 表示整数类型占位、%c 表示为字符char 类型占位、%f 表示为浮点进行占位;在此处进行输出显示时不同类型需要对应不同类型的占位符。

    三 输入

    此小点系统学习点击《看聊天记录都学不会C语言?太菜了吧(4)原来我早就会编程了跳转
    此小点系统学习点击《看聊天记录都学不会Python到游戏实战?太菜了吧》(3)都说123是字符不是数字跳转

    输入指从键盘上输入值到计算机中,在此处我们可以理解成从键盘上输入内容至程序之中接收。在 C 语言中使用 scanf 函数用于接收用户从键盘上输入的值,在 Python 中使用 input 接收用户输入的值,并且都可以将用户输入的值存储至某一个变量之中。

    在 C 语言中使用 scanf 示例如下:

    int a=0;
    scanf("%d",&a);
    

    以上代码使用了 scanf 接收用户输入的值,其中 %d 表示将会输入一个整数,这个整数将会存到变量 a 之中。在scanf 中 &a 表示获取变量 a 的地址,& 称为取地址符号;其实这一句代码也很好理解,也就是接收一个值,这个值将会放在变量 a 地址之中,就像送外卖,需要填写地址外卖员才能够将你所买的东西送到家。

    在 python 中接收用户所输入的值依旧非常简单,如下代码:

    b=0
    b=input()
    

    input 是 python 语言中接收用户输入的函数,直接将 input 函数赋值到一个变量即可;此时运行到这一句代码时,input 函数发生作用,等待用户输入一个值确认后存储至 b 变量之中。

    四 判断

    此小点系统学习点击《看聊天记录都学不会C语言?太菜了吧(7)下一篇文章告诉你牛郎是谁跳转
    此小点系统学习点击《看聊天记录都学不会Python到游戏实战?太菜了吧》(4)小白不知道这个知识点将会错漏百出跳转

    在 C 语言与 Python 语言中,判断极为类似,最大的不同在于 C 语言使用花括号表示层级,而 Python 语言使用空格表示层级。

    在 C 语言中 if 语句表示判断一个条件是否成立,例如用户输入一个数,判断这个数是否为指定的一个数:

    int a=0;
    scanf("%d",&a);
    if(a==3){
    	printf("用户输入的是 3 ");
    }
    

    以上代码首先创建了一个变量 a 存储的值是0,随后使用 scanf 接收用户输入的值存储至变量 a中,最后使用 if 语句判断用户输入的值是否为3。

    if 是关键字,我们可以理解关键字为有特殊功能的字符,在这里 if 就是表示接下来需要进行判断了。在 if 关键字后的圆括号中,a==3 表示判断 a 是否等于3.在 C 语言中,使用两个等于号表示判断等于号左右两边的值是否相等;此处,如果该条件成立,那么将会执行圆括号后的花括号内的代码,也就是显示 用户输入的是 3 ,如果条件错误,用户输入的值不是 3 将会什么都不显示。

    在 Python 语言中,同样功能的代码如下:

    a=int(input())
    if a==3:
        print("用户输入的是 3 ")
    

    我们发现以上代码在使用 input 函数时使用了 int() 将 input() 放在其中,这是因为在 python 中 input输入的所有值都将为字符串类型,之前说过“123” 也是字符串,在 Python 中使用了双引号进行标识的值都为字符串类型,此时使用字符串类型与数字 3 进行判断肯定是不对的,所以在此使用 int() 将输入的内容强制转换为整数类型。

    将输入的内容转为数字后,使用 if 进行判断,但是我们可以看到,在 Python 中并没有使用圆括号将条件 a==3 进行包含,这是因为在 Python 中条件都不需要使用圆括号进行包含,使用空格间隔即可;那如何在 Python 中表示条件正确后需要执行的代码呢?此时我们可以使用冒号代替花括号,在条件后使用冒号,随后换一行,在代码语句前加上空格即可,这样便代表了这个语句的层级是属于 if 语句条件执行正确后需要执行的代码。在此处若你想要执行多行代码,只需要使用相同的空格间隔出语句即可,如下:

    a=int(input())
    if a==3:
        print("用户输入的是 3 ")
        print("用户输入的是 3 ")
        print("用户输入的是 3 ")
    

    if else

    在 C 语言与 Python 语言中,还支持当条件判断错误后执行的固定语句,使用esle 关键字即可。

    C语言例:

    int a=0;
    scanf("%d",&a);
    if(a==3){
    	printf("用户输入的是 3 ");
    }else{
    	printf("用户输入的不是 3");
    } 
    

    以上代码当用户输入的值不是 3 时将会执行else 语句后花括号内的代码。

    Python 语言例:

    a=int(input())
    if a==3:
        print("用户输入的是 3 ")
    else:
        print("用户输入的不是 3 ")
    

    以上代码与 C 语言类似,使用 else 表示条件错误后执行的代码,在 Python 中使用冒号替代花括号,使用空格表示了层级。

    if else if

    若当我想判断用户输入的数是 11 还是 3 还是 5时该如何做呢?不用担心,C 语言与 Python 都有提供支持,例如如下代码:

    int a=0;
    scanf("%d",&a);
    if(a==3){
    	printf("用户输入的是 3 ");
    }else if(a==11){
    	printf("用户输入的不是 11");
    }else if(a==5){
    	printf("用户输入的不是 5");
    }else{
    	printf("用户输入是其他数");
    }
    

    以上使用了 else if 判断多个条件,若 a==3 条件不满足则判断 a 是否等于 11,若满足则不执行之后的代码,若a 不等于3、a不等于11并且 a不等于5则会执行 else 语句。以下截图展示了这几种情况:



    那么 Python 也类似,只是将 else if 改成了 elif,其它编写方式同 Python 的 if 语句编写方式一致:

    a=int(input())
    if a==3:
        print("用户输入的是 3 ")
    elif a==11:
        print("用户输入的是 11")
    elif a==5:
        print("用户输入的是 5")
    else:
        print("用户输入是其他数")
    

    五 循环

    此小点系统学习点击《看聊天记录都学不会C语言?太菜了吧》(11)2分钟领悟数组跳转

    循环用于重复执行一个代码块,循环有一个关键字、一个条件、一个循环的代码块。在 C 语言循环中条件使用圆括号、代码块使用花括号包含;在 Python 中循环条件不需要使用圆括号、使用冒号表示代码块的开始。

    while 循环

    C 语言的 while 循环:

    int a=0;
    while(a<10){
    	printf("我在循环...");
    	a++;
    }
    

    以上代码创建了一个变量 a 存储值 0,while 是循环的关键字,那么圆括号括起来的 a<10 则是这个循环执行时所具备的条件,若 a 不小于 10 则不会再进行循环。我们可以查看花括号中的内容,printf 显示 我在循环…,a++ 表示自增1,也就是a 这个变量执行到这个代码将会从原有的值进行加 1计算,由于是在循环中,所以每次循环 a 变量都会加 1,那么总有一次是会大于 10,条件则不会成立,循环不再执行,那么将会显示 10 次 我在循环…,结果如下:

    在 Python 中我们根据其刚述说的规律,可以写出以下代码:

    a=0
    while a<10:
        print("我在循环...")
        a+=1
    

    以上代码着重查看 a+=1,在 Python 中不允许使用 a++这种写法,此处的 a+=1 与 a++ 最终结果一致,那么此时也就完成了 Python 语言的 while 循环编写。

    for 循环

    for 循环在 C 语言与 Python 语言中有一些区别,不过大体一致,首先我们查看 C 语言的 for 循环代码:

    int a;
    for(a=0;a<10;a++){
    	printf("我在循环...");
    }
    

    以上代码 for 为关键字,圆括号中不止条件;a=0为a 变量的定义,也就是可以在for 循环的圆括号中定义参与循环控制变量的值,然后分号结束后第二个内容则为条件,第三个内容为 a++表示每次循环都会加 1;之后的花括号内的代码则为循环内容。

    Python 语言的 for 循环代码如下:

    for i in range(10):
        print("我在循环")
    

    以上代码中 for 为关键字,i in range(10) 这一行代码中 range将会生成一个 0-9 这几个数字,i 是一个变量,这个变量将会自动的去找 range 生成的这几个数字,每次循环找一个,最终找到 range 生成的最后一个数字时循环就结束了。

    break 与 continue

    break 与 continue 均是用于循环控制,若我想循环到第五次时就不再循环可以使用 break。

    C语言示例:

    int a;
    for(a=0;a<10;a++){
    	if(a==5){
    		break;
    	} 
    	printf("我在循环...");
    }
    

    以上代码在循环的代码块中添加了一个 if 判断,如果 a此时的值等于 5,则使用 break,此时将不会再进行循环。结果如下:

    Python 中此功能实现也是使用break,代码如下:

    for i in range(10):
        if i==5:
            break
        print("我在循环")
    

    以上代码的变量 i 由于每次都会去找 range 生成的 10个数,这些数将会从 0 开始,第一次找到0那么 i 的值就会变成0、第二次找到1以此类推,到第五次时 i 的值将会变成 5,此时 i==5 条件成立跳出循环。有些同学可能问为什么break跟其他的代码空格不一样?那是因为此时 break 又属于 if 语句内的代码了,所以当然要添加更多的空格表示所属层级了。

    我们可以将以上代码的 break 改为 continue,可以看到循环变成了 9次,那是因为 continue 表示忽略此次循环,但是不跳出,只是当前此次循环不再执行下去而已。

    六 自定义函数

    此小点系统学习点击《看聊天记录都学不会C语言?太菜了吧》(14)这么神奇?我写了20行代码竟然一行就可以搞定?跳转

    我们知道函数其实就是一种功能,那我们也可以编写一些功能,这些功能不是系统提供的,是我们自己编写的,所以称为自定义函数。

    在 C 语言中编写自定义函数示例如下;

    #include<stdio.h>
    int r1(){
    	return 1;
    }
    
    int main(){
    	int a;
    	a=r1();
    	printf("%d ",a);
    }
    

    以上代码中,在 main 之上有一个使用 int 标识的代码块,这就是自定义函数。在此的 int 表示这个函数有一个值进行返回,不明白这是什么意思?没关系,我们继续往下讲。int 后面的 r1 为函数名,圆括号是固定写法,在圆括号后的花括号内为这个自定义函数的代码,其中 return 表示返回的意思,1 则表示返回的值。由于此函数只有一句代码,那么他的功能就很清楚了,就是为了返回一个数值 1,这个数值是整数类型,所以在函数名开头需要使用 int 进行说明这个函数返回内容的类型。

    我们继续看 main 里面的代码,首先创建了一个变量 a并没有赋值,然后赋值变量 a 为 r1 函数,为什么在这个地方要这样写呢?那是因为 r1 函数有一个返回值,那就是 1;代码运行到这一句时将会执行函数内的代码,将会执行 return 1,此时这个函数就有了一个结果,这个结果将会赋值给变量 a,那么此时变量 a 中的内容就是为 1了。在自定义函数中运行写多行代码,可以写上你的逻辑,或者是使用 printf 进行说明此次返回的值是 1 都行。

    结果如下:

    如果这个函数需要返回其它类型的值只需要在函数名前修改函数返回值类型即可。

    在函数中还可以添加参数,例如如下代码:

    #include<stdio.h>
    
    int r1(int a,int b){
    	return a+b;
    }
    
    int main(){
    	int a;
    	a=r1(11,2);
    	printf("%d ",a);
    }
    

    以上代码在原有基础上在自定义函数的圆括号内添加了两个参数,一个是a还有一个是b;a与b是整型变量,表示这个函数接收两个整数类型的参数;那么此时在使用 r1 函数时应该在圆括号中传入两个参数并且使用逗号进行间隔,在以上代码中传入了11与2;我们再回到 r1 函数中,我们可以看到在函数体代码中我们使用 return 返回了a+b 的值,那结果应该为 13,最终运行结果,答案正确:

    Python 中的自定义相比 C 语言简单了不少,不需要说明函数返回值类型,参数也不需要标识类型;我们实现同一个功能只需简单的几行代码:

    def r1(a,b):
        return a+b
    
    a=r1(11,2)
    print(a)
    

    以上代码中 def 标识创建一个自定义函数,r1为函数名,圆括号中的 a 和 b 为参数,return 这一句代码依旧使用空格进行标记,其实我们发现 python 代码更像是 C 语言的极简版。

    七 导库

    导库在 C 语言中是头文件,在 Python 中是添加库。在 C 语言中使用 #include<> 可以将所需的头文件添加至程序中方便使用,在 Python 中使用 import 导入库可以在接下来代码中使用。在这里我们都可以理解 C 语言中的头文件与 Python 中的库为一个工具箱,我们需要使用某些工具时就将其工具箱拿过来,因为这个工具存到了这个工具箱内。

    C语言的#include 不再进行说明,因为基础代码中就有其存在,我们讲解 Python 中的 import。在 Python 若想让我们的程序休眠几秒可以使用一个库叫做 time,或者说是时间库,我们需要停止时间所使用的停止工具就在这个工具箱中,代码示例如下:

    import time
    def r1(a,b):
        return a+b
    
    time.sleep(3)
    a=r1(11,2)
    print(a)
    

    import time 表示将 time 这个工具箱拿过来,time.sleep 表示使用 time 这个工具箱中的 sleep 工具,sleep 作用为停止几秒,在圆括号中输入秒数即可,其中的小数点我们可以理解为“的”,某某工具箱中“的”某某工具。

    数组(列表)

    此小点系统学习点击《看聊天记录都学不会C语言?太菜了吧》(11)2分钟领悟数组跳转

    我们现在学习的变量只能存储一个内容,那么如何存储多个内容呢?在 C 语言与 Python 中提供了类似的概念;在 C 语言有数组可以存储多个值,在 Python 中有列表方便我们存储多个值。

    C语言中的数组:

    int a[]={9,6,3,2,5,8,7,4,1,0};
    printf("%d ",a[2]);
    

    以上代码 a[] 表示这是一个数组,在数组头的 int 表示这是一个整数类型的数组,在等于号右侧则是存储的值,存储的值使用花括号括起来并且使用逗号进行间隔。在C 语言中数组的元素指向是从 0 开始数的,若你想说数组中存储的值 9,那么你可以说是数组的第 0 个元素,3则是数组的第 2 个元素,结果如下:

    Python 中的列表也类似:

    a=[9,6,3,2,5,8,7,4,1,0]
    print(a[2])
    

    以上代码中 a 表示一个列表。等于号右边的方括号内为这个列表存储的值,使用 print 输出列表第 2 个元素也就是3。

    结尾

    由于时间此篇文章还有很多相同点和非相同点没有介绍,我将在 4月14日 晚上7.30 直播间慢慢补坑,欢迎各位前来捧场。本篇文目的在于给新手一个概念,方便之后的学习,望各位学习一帆风顺~

    展开全文
  • 十一届蓝桥杯python大学组国赛真题

    万次阅读 多人点赞 2020-11-24 00:10:43
    试题 A: 美丽的 2 【问题描述】 小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴。 他很好奇,在公元 1 年公元 2020 年(包含)...个数如果除了 1 和自己还有其他约数,则称为个合数。例如:1, 2, 3不是合数,4,

    试题 A: 美丽的 2

    【问题描述】
    小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴。
    他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2?

    这道题送分题

    ans = 0
    for i in range(1,2021):
        if str(i).count("2") != 0:
            ans += 1
    print(ans)
    

    试题 B: 合数个数

    【问题描述】
    一个数如果除了 1 和自己还有其他约数,则称为一个合数。例如:1, 2, 3不是合数,4, 6 是合数。
    请问从 1 到 2020 一共有多少个合数。

    同样的送分题

    ans = 0
    for i in range(4,2021):
        for j in range(2,i//2+1):
            if i%j == 0:
                ans += 1
                break
    print(ans)
    
    

    试题 C: 阶乘约数

    【问题描述】
    定义阶乘 n! = 1 × 2 × 3 × · · · × n。
    请问 100! (100 的阶乘)有多少个约数。

    如果你想暴力的话、你是跑不出来的。

    试题 D: 本质上升序列

    【问题描述】
    小蓝特别喜欢单调递增的事物。
    在一个字符串中,如果取出若干个字符,将这些字符按照在字符串中的顺序排列后是单调递增的,则成为这个字符串中的一个单调递增子序列。
    例如,在字符串 lanqiao 中,如果取出字符 n 和 q,则 nq 组成一个单调递增子序列。类似的单调递增子序列还有 lnq、i、ano 等等。
    小蓝发现,有些子序列虽然位置不同,但是字符序列是一样的,例如取第二个字符和最后一个字符可以取到 ao,取最后两个字符也可以取到 ao。小蓝认为他们并没有本质不同。
    对于一个字符串,小蓝想知道,本质不同的递增子序列有多少个?
    例如,对于字符串 lanqiao,本质不同的递增子序列有 21 个。它们分别是 l、a、n、q、i、o、ln、an、lq、aq、nq、ai、lo、ao、no、io、lnq、anq、lno、ano、aio。
    请问对于以下字符串(共 200 个小写英文字母,分四行显示):(如果你把以下文字复制到文本文件中,请务必检查复制的内容是否与文档中的一致。在试题目录下有一个文件 inc.txt,内容与下面的文本相同)

    tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhf
    iadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqij
    gihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmad
    vrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl

    本质不同的递增子序列有多少个?

    估计是用动态规划做,考试的时候没想出来。

    试题 E: 玩具蛇

    【问题描述】
    小蓝有一条玩具蛇,一共有 16 节,上面标着数字 1 至 16。每一节都是一个正方形的形状。相邻的两节可以成直线或者成 90 度角。
    小蓝还有一个 4 × 4 的方格盒子,用于存放玩具蛇,盒子的方格上依次标着字母 A 到 P 共 16 个字母。
    小蓝可以折叠自己的玩具蛇放到盒子里面。他发现,有很多种方案可以将玩具蛇放进去。
    下图给出了两种方案:
    在这里插入图片描述
    请帮小蓝计算一下,总共有多少种不同的方案。如果两个方案中,存在玩具蛇的某一节放在了盒子的不同格子里,则认为是不同的方案。

    不会做。

    试题 F: 天干地支

    【问题描述】
    古代中国使用天干地支来记录当前的年份。
    天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊
    (wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。
    地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、亥(hài)。
    将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。2020 年是庚子年。
    每过一年,天干和地支都会移动到下一个。例如 2021 年是辛丑年。
    每过 60 年,天干会循环 6 轮,地支会循环 5 轮,所以天干地支纪年每 60年轮回一次。例如 1900 年,1960 年,2020 年都是庚子年。
    给定一个公元纪年的年份,请输出这一年的天干地支年份。
    【输入格式】
    输入一行包含一个正整数,表示公元年份。
    【输出格式】
    输出一个拼音,表示天干地支的年份,天干和地支都用小写拼音表示(不表示声调),之间不要加入任何多余的字符。
    【样例输入】
    2020
    【样例输出】
    gengzi
    【评测用例规模与约定】
    对于所有评测用例,输入的公元年份为不超过 9999 的正整数。

    这题你要是把公元1年想成jiǎzǐ你是无论怎么都做不出来的,比赛时这个题搞了我一个半小时,后面才知道起点不是jiǎzǐ,反推出是xinyou才做出来了。能搞死人哈。

    t = ["","xin","ren","gui","jia","yi","bing","ding","wu","ji","geng"]
    d = ["","you","xu","hai","zi","chou","yin","mao","chen","si","wu","wei","shen"]
    n = int(input())
    a,b = 1,1
    for i in range(1,n+1):
        if a>10:
            a = a%10
        if a%10 == 0:
            a = 10
        if b>12:
            b = b%12
        if b%12 == 0:
            b = 12
        a += 1
        b += 1
    print(t[a-1]+d[b-1])
    

    试题 G: 重复字符串

    【问题描述】
    如果一个字符串 S 恰好可以由某个字符串重复 K 次得到,我们就称 S 是 K 次重复字串。例如 “abcabcabc” 可以看作是 “abc” 重复 3 次得到,所以“abcabcabc” 是 3 次重复字符串。
    同理 “aaaaaa” 既是 2 次重复字符串、又是 3 次重复字符串和 6 次重复字符串。
    现在给定一个字符串 S,请你计算最少要修改其中几个字符,可以使 S 变为一个 K 次字符串?

    【输入格式】
    输入第一行包含一个整数 K。
    第二行包含一个只含小写字母的字符串 S。

    【输出格式】
    输出一个整数代表答案。如果 S 无法修改成 K 次重复字符串,输出 1。

    【样例输入】
    2
    aabbaa

    【样例输出】
    2

    【评测用例规模与约定】
    对于所有评测用例,1 ≤ K ≤ 100000, 1 ≤ |S | ≤ 100000。其中 |S | 表示 S 的
    长度。

    这道题仔细分析应该不难写出来

    def main():
        k1 = int(input())
        s = input().strip()
        n = len(s)
        k = n//k1
        ans = 0
        if k1 == 1:
            for i in s:
                if i != s[0]:
                    ans += 1
            print(ans)
            return
        r = []
        if n%k != 0:
            print(-1)
            return
        for i in range(0,n,k):
            d = ""
            for j in range(i,i+k):
                d += s[j]
            r.append(d)
        maxV = 0
        n1 = len(r)
        for i in range(n1):
            if maxV<r.count(r[i]):
                maxV = r.count(r[i])
        sm = ""
        for i in range(n1):
            if r.count(r[i]) == maxV:
                sm = r[i]
                break
        
        for i in range(0,n,k):
            ind = 0
            for j in range(i,i+k):
                if sm[ind] != s[j]:
                    ans +=1
                ind += 1
        print(ans)
    main()
    

    试题 H: 答疑

    【问题描述】
    有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。
    老师可以安排答疑的顺序,同学们要依次进入老师办公室答疑。
    一位同学答疑的过程如下:

    1. 首先进入办公室,编号为 i 的同学需要 si 毫秒的时间。
    2. 然后同学问问题老师解答,编号为 i 的同学需要 ai 毫秒的时间。
    3. 答疑完成后,同学很高兴,会在课程群里面发一条消息,需要的时间可以忽略。
    4. 最后同学收拾东西离开办公室,需要 ei 毫秒的时间。一般需要 10 秒、
      20 秒或 30 秒,即 ei 取值为 10000,20000 或 30000。
      一位同学离开办公室后,紧接着下一位同学就可以进入办公室了。
      答疑从 0 时刻开始。老师想合理的安排答疑的顺序,使得同学们在课程群
      里面发消息的时刻之和最小
      【输入格式】
      输入第一行包含一个整数 n,表示同学的数量。
      接下来 n 行,描述每位同学的时间。其中第 i 行包含三个整数 si, ai, ei,意
      义如上所述。
      【输出格式】
      输出一个整数,表示同学们在课程群里面发消息的时刻之和最小是多少。
      【样例输入】
      3
      10000 10000 10000
      20000 50000 20000
      30000 20000 30000
      【样例输出】
      280000
      【样例说明】
      按照 1, 3, 2 的顺序答疑,发消息的时间分别是 20000, 80000, 180000。
      【评测用例规模与约定】
      对于 30% 的评测用例,1 ≤ n ≤ 20。
      对于 60% 的评测用例,1 ≤ n ≤ 200。
      对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ si ≤ 60000,1 ≤ ai ≤ 1000000, ei ∈ {10000, 20000, 30000},即 ei 一定是 10000、20000、30000 之一。

    这题看着有点吓人哈、其实看懂题之后你会发现最小之和就是每位同学从进入办公室到离开办公室时间总和从小到大排序,然后最后一个不要加上整理东西离开办公的时间就ok了,也就是用贪心就能解决。

    n = int(input().strip())
    nums = [list(map(int,input().split())) for _ in range(n)]
    r = []
    for i in range(n):
        r.append([sum(nums[i]),nums[i][2]])
    r.sort()
    ans = 0
    s = 0
    for i in range(n):
        ans += r[i][0]-r[i][1] + s
        s += r[i][0]
    print(ans)
    

    试题 I: 补给

    【问题描述】
    小蓝是一个直升飞机驾驶员,他负责给山区的 n 个村庄运送物资。每个月,他都要到每个村庄至少一次,可以多于一次,将村庄需要的物资运送过去。每个村庄都正好有一个直升机场,每两个村庄之间的路程都正好是村庄之间的直线距离。
    由于直升机的油箱大小有限,小蓝单次飞行的距离不能超过 D。每个直升机场都有加油站,可以给直升机加满油。每个月,小蓝都是从总部出发,给各个村庄运送完物资后回到总部。如果方便,小蓝中途也可以经过总部来加油。
    总部位于编号为 1 的村庄。请问,要完成一个月的任务,小蓝至少要飞行多长距离?
    在这里插入图片描述
    【输出格式】
    输出一行,包含一个实数,四舍五入保留正好 2 位小数,表示答案。
    【样例输入】
    4 10
    1 1
    5 5
    1 5
    5 1
    【样例输出】
    16.00
    【样例说明】
    四个村庄形成一个正方形的形状。
    【样例输入】
    4 6
    1 1
    4 5
    8 5
    11 1
    【样例输出】
    28.00
    【样例说明】
    补给顺序为 1 → 2 → 3 → 4 → 3 → 2 → 1。
    【评测用例规模与约定】
    对于所有评测用例,1 ≤ n ≤ 20, 1 ≤ xi, yi ≤ 104, 1 ≤ D ≤ 105。

    不会做。

    试题 J: 蓝跳跳

    【问题描述】
    小蓝制作了一个机器人,取名为蓝跳跳,因为这个机器人走路的时候基本
    靠跳跃。
    蓝跳跳可以跳着走,也可以掉头。蓝跳跳每步跳的距离都必须是整数,每步可以跳不超过 k 的长度。由于蓝跳跳的平衡性设计得不太好,如果连续两次
    都是跳跃,而且两次跳跃的距离都至少是 p,则蓝跳跳会摔倒,这是小蓝不愿意看到的。
    小蓝接到一个特别的任务,要在一个长为 L 舞台上展示蓝跳跳。小蓝要控制蓝跳跳从舞台的左边走到右边,然后掉头,然后从右边走到左边,然后掉头,然后再从左边走到右边,然后掉头,再从右边走到左边,然后掉头,如此往复。为了让观者不至于太无趣,小蓝决定让蓝跳跳每次用不同的方式来走。小蓝将蓝跳跳每一步跳的距离记录下来,按顺序排成一列,显然这一列数每个都不超过 k 且和是 L。这样走一趟就会出来一列数。如果两列数的长度不同,或者两列数中存在一个位置数值不同,就认为是不同的方案。
    请问蓝跳跳在不摔倒的前提下,有多少种不同的方案从舞台一边走到另一边。
    【输入格式】
    输入一行包含三个整数 k, p, L。
    【输出格式】
    输出一个整数,表示答案。答案可能很大,请输出答案除以 20201114 的余数。
    【样例输入】
    3 2 5
    【样例输出】
    9
    【样例说明】
    蓝跳跳有以下 9 种跳法:

    1. 1+1+1+1+1
    2. 1+1+1+2
    3. 1+1+2+1
    4. 1+2+1+1
    5. 2+1+1+1
    6. 2+1+2
    7. 1+1+3
    8. 1+3+1
    9. 3+1+1
      【样例输入】
      5 3 10
      【样例输出】
      397
      【评测用例规模与约定】
      对于 30% 的评测用例,1 ≤ p ≤ k ≤ 50,1 ≤ L ≤ 1000。
      对于 60% 的评测用例,1 ≤ p ≤ k ≤ 50,1 ≤ L ≤ 109。
      对于 80% 的评测用例,1 ≤ p ≤ k ≤ 200,1 ≤ L ≤ 1018。
      对于所有评测用例,1 ≤ p ≤ k ≤ 1000,1 ≤ L ≤ 1018。
    展开全文
  • 作者|周 洁对于人工智能来说,1997 年5月11日是历史性的天。IBM的超级计算机“深蓝”(Deep Blue)以2胜1负3平的成绩战胜了当时世界排名第的国际象棋大师加里·卡斯帕罗夫,时间全球轰动。“深蓝”的设计者们...
  • 想要拿代码或加入学习计划(** 博主会监督你并且教你写文章 **)的拉最下面(PC端Web打开)加博主即可,目录也在最下面。 参加1_bit博主前端学习计划发文时在头部记得加上本专栏链接,示例如下: 我已加入 1_...
  • 本专栏起名【Python入门精通】,主要分为基础知识和项目实战两个部分,目前基础知识部分已经完全介绍完毕。下阶段就是写Python项目实战以及爬虫相关的知识点。 为了对前期学习的Python基础知识做个总结归纳...
  • 古人云:“人生之事,命二运三风水,四积阴德五读书,六名七相八敬神,九交贵人养生!”,其中的“六名”便是指的名字,个好名字将对命运产生举足轻重的影响!易胜公司取名软件,依据<周易五行平衡取名法>,...
  • 周日在家宅了天,了周一的时候,林萧如往常一样上班。  刚公司,林萧就被程刚叫了办公室,本来林萧心中有些忐忑,以为是因为上次删库的事秋后算账,不过听完程刚的交代之后,林萧也默默的松了口气。  ...
  • 2020第十一届蓝桥杯国赛Python组

    千次阅读 2022-06-09 16:43:02
    收集2020年第十一届蓝桥杯国赛python组题目,并给出对应的python解,思路清晰,代码注解详细
  • 教学楼起名(文雅的教学楼取名)

    千次阅读 2021-07-29 08:02:52
    笃行楼给栋楼取名,分别是:四栋教学楼,实验楼,行政楼,食堂,教师公寓,运。教学楼:明志楼,致远楼(诸葛亮《诫子书》非淡泊无以明志,非宁静无以致远) 春华楼 秋实楼(《三国志·魏志·邢颙传》:“采庶子之...
  • 01分析个安卓CrackMe

    千次阅读 2022-03-23 23:43:10
    主要是ida的操作,分析java层c层的逻辑,动态调试获取密码。
  • 个简单的MATLAB程序(1100求和)

    千次阅读 2020-12-22 14:37:33
    脚本 M 文件是比较简单的程序文件,仅是串按用户意图排列而成的MATLAB 命令集合。在MATLAB 的工作界面,单击左上角的“新建脚本”图标,新建个脚本文件,会弹出下图所示的脚本文件编辑器窗口。在这个编辑器窗口...
  •   上述案例中,将www.360buy.com和www.jingdong.com都能跳转www.jd.com,那么www.jd.com我们就可以把它起名叫主域名,其他两个就是我们所说的镜像域名,当然如果我们不想把整个网站做镜像,只想为其中某个子...
  •  1900年,Virginian号豪华邮轮上,个孤儿被遗弃在头等舱,由船上的水手抚养长大,取名1900(蒂姆•罗斯 饰)。1900慢慢长大,显示出了无师自通的非凡钢琴天赋,在船上的乐队表演钢琴,每个听过他演奏的人,都被...
  • 十一届蓝桥杯大赛软件类决赛(C/C++ 大学A组)

    万次阅读 多人点赞 2022-05-05 10:46:20
    十一届蓝桥杯大赛软件类决赛 C/C++ 大学 A 组
  • 我们对list、tuple、dict、set、str等类型的数据使用for…in…的循环语法其中依次拿数据进行使用,这个过程称为遍历,也叫迭代。 把可以通过for…in…这类语句迭代读取条数据供我们使用的对象称之为可迭代对象...
  • 1加1000,怎么快速出答案?

    千次阅读 2021-03-01 10:37:02
    昨天给大家分享了switch语句,做了个简单的计算器,今天分享一下for循环,来计算一下1加1000的和。for循环是Java中的种循环语句,作用就是我们不用写重复的代码,通过循环来反复地执行段代码。语法格式...
  • 十一届蓝桥杯python大学组国赛真题(部分题解)

    千次阅读 多人点赞 2021-04-12 21:00:07
    十一届蓝桥杯python大学组国赛真题 文章目录第十一届蓝桥杯python大学组国赛真题试题 A: 美丽的 2试题 B: 合数个数试题 C: 阶乘约数试题 D: 本质上升序列试题 E: 玩具蛇试题 F: 天干地支试题 G: 重复字符串 试题 A...
  • 【C++入门必看】C++01入门编程

    千次阅读 多人点赞 2021-05-25 19:50:39
    1.1 第个C++程序 编写个C++程序总共分为4个步骤 创建项目 创建文件 编写代码 运行程序 1.1.1 创建项目 ​ Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开 [外链图片转存失败,源站可能有防盗链...
  • 在之前的文档《深度解密二五:解密视频、短视频营销的“四口诀法”》、《深度解密二三:自媒体影视视频剪辑号的运营思路及整体操作过程》以及《深度解密网络项目三:抖音起名项目整体步骤详解》中我有讲过类似...
  • GitHub:现代科学取名工具

    千次阅读 2020-07-17 22:22:53
    hello,小伙伴们,大家好,今天给大家推荐的开源项目是:fate(命运),Github第个开源的中文取名项目,个好名字伴随人的一生,FATE让你取个好名字吗,感兴趣的小伙伴不妨去下载给自己起个别的名字(手动...
  • 块小小的 CPU 里有多少个晶体管?几亿个。单枪匹马造出个 CPU 乃至完整的电脑需要多长...他在大二时就有了大胆的设想,经过一年的精心营造,建起了个计算机雏形,取名Alpha21016。虽然它不能与现实中的计...
  • 移动互联网

    千次阅读 2018-10-17 10:16:40
    这是段波澜壮阔、荡气回肠的历史! 2011年8月16日,北京798艺术中心。 台上,雷军每公布项技术参数,台下就传来一阵几乎要掀翻屋顶的声浪。 位记者问:“这都是哪请来的托,太敬业了!”工作人员只得...
  • 记录一下国赛的题面,真的和省赛完全不是个难度的。这次估计国三都混不,还是太菜了QAQ,之后如果能补题就补吧。 题面的pdf文件我也上传CSDN下载区了,内容和本篇文章一致(题面真长,我复制markdown修改...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,105
精华内容 10,442
热门标签
关键字:

从一到十取名