前两天浏览了些基础中的基础,譬如如何安装Anacnoda,Notepad++,譬如定义变量,使用函数和方法等等- -
没装pycharm是因为需要破解,以后再说吧qwq
接下来两天,开始做题,也是很拼,算法需要再学习,算法好难- -
于是来记录下,自己做过的目前来说比较困难但已经解决的题:
题目描述:
国王将金币作为工资,发放给忠诚的骑士。第1天,骑士收到一枚金币;之后两天(第2天和第3天)里,每天收到两枚金币;之后三天(第4、5、6天)里,每天收到三枚金币;之后四天(第7、8、9、10天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续 n 天每天收到 n 枚金币后,骑士会在之后的连续n+1天里,每天收到n+1枚金币(n为任意正整数)。
你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。
一,两个循环
1 n = int(input()) 2 i = 1 3 j = 1 4 kb = 1 5 sum = 0 6 while i <=n: 7 sum =+ kb 8 if i == j: 9 kb += 1 10 j = j + k 11 i+=1 12 print(sum)
二,更直观一些
1 n = int(input()) 2 kb = 0 3 day = 0#获得同等金币的天数 4 sum = 0 5 for i in range(1,n+1): 6 if day == 0: 7 kb += 1 8 day = kb 9 if day !=0: 10 sum += kb 11 day -=1 12 print(sum)
题目描述:
"不能说的数字"是在聚会中常玩的一种游戏,假定这个数字是X(2<x<=9),那么X的倍数和带有X的数字都不能说,从1号开始轮流说数字。如果你与其他N-1(6<n<=10)个人一起玩这个游戏,你是第一个发言的玩家,请问当M次轮到你发言时,你的正确答案应该是什么。
1 x = int(input()) 2 n = int(input()) 3 m = int(input()) 4 k = (m-1)*n+1 5 i = 1 6 while i <=k: 7 flag = True 8 if i % x == 0: 9 k += 1 10 flag = False 11 if flag: 12 y =i 13 j = y%10 14 while j!=0: 15 if j == x: 16 k += 1 17 y = y // 10 18 j = y % 10 19 i +=1 20 print(k)
题目描述:
输入10个整数,将他们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。
这一题想破脑袋也想不出,最后问出来的。
1 l = [] 2 for i in range(10): 3 l.append(int(input())) 4 li = list(enumerate(l)) 5 li.sort(key = lambda x:x[1]) 6 for x in li: 7 print(x[1],end = " ") 8 print("\n",end="") 9 for x in li: 10 print(x[0]+1,end= " ")
题目描述:
忘了,应该是证明一个数是由两个质数相乘而来。
1 import math 2 def prime(num): 3 if num<=1: 4 return False 5 else: 6 for i in range(2,int((math.sqrt(num)+1))): 7 if num%i == 0: 8 return False 9 return True 10 def fen(num): 11 arr=[] 12 for i in range(2,int((math.sqrt(num)+1))): 13 if num%i==0: 14 arr.append(i)#i一定是质数,否则在它之前应该有它自己的因子已经添加了。 15 arr.append(int(num/i)) 16 break 17 return arr 18 t=int(input()) 19 temp = [] 20 for i in range(t): 21 temp.append(int(input())) 22 for x in temp: 23 if fen(x)==[]: 24 print("N") 25 elif prime(fen(x)[1]):#第二个因子是质数 26 print("Y") 27 else: 28 print("N")
接下来不做题了,先学算法去- -