大鹏

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

 

 

 1 """s = input().split()
 2 m = int(s[0])
 3 n = int(s[1])"""
 4 while True:
 5     try:
 6         m,n = map(int, input().split())
 7         dp = [[1 for i in range(n+1)] for i in range(m+1)] #dp[m][n]
 8         for i in range(m+1):
 9             dp[i][0] = 0 #零个物品
10         for j in range(1, n+1):
11             for i in range(1, m+1):
12                 if j > i:
13                     dp[i][j] = dp[i][i]
14                 else:
15                     dp[i][j] = dp[i][j-1] + dp[i-j][j]
16         print(dp[m][n])
17     except:
18         break
19 
20 '''
21 放苹果分两种情况,一种是有盘子为空,一种是每个盘子都有苹果
22 令(m,n)表示将m个苹果放入n个盘子中的摆放方法总数
23 1. 假设有一个盘子为空,则(m,n)问题转化为将m个苹果放在n-1个盘子上,即求得(m, n-1)即可
24 2. 假设所有盘子都装有苹果,则每个盘子至少有一个苹果,即最多剩下m-n个苹果,即问题转化为将m-n个苹果
25 放到n个盘子里,即求(m-n, n)
26 '''
27 def f(m,n):
28     if m < 0 or n < 0:
29         return 0
30     elif m == 1 or n == 1:
31         return 1
32     else :
33         return f(m, n-1) + f(m-n, n)
34 while True:
35     try:
36         m, n = map(int, input().split())
37         print(f(m, n))
38     except:
39         break
View Code

 

 

 

 

 1 while True:
 2     try:
 3         n = int(input())
 4         m = bin(n).count('1')
 5         print(m)
 6     except:
 7         break
 8 
 9 while True:
10     try:
11         nlist=list(map(int,input().split()))
12         print(nlist)  #输入4 得[4] 不推荐
13         for n in nlist:
14             print(str(bin(n)).count('1'))
15     except:
16         break
17 
18 
19 
20 while True:
21     try:
22         n = int(input())
23         count = 1
24         while n / 2 > 1 :
25             if n % 2 == 1:
26                 count += 1
27             n = n // 2
28         print(count)
29     except:
30         break
View Code

 

 

 1 test = input()
 2 for i in range(100):
 3     for j in range(100 - i):
 4         if 5 * i + 3 * j + (100 - i - j) / 3 == 100:
 5             print(str(i) + ' ' + str(j) + ' ' + str(100 - i - j))
 6 
 7 #########################################
 8 while True:
 9     try:
10         n = int(input())
11     except:
12         break
13 
14     for x in range(100):
15         for y in range(100):
16             for z in range(100):
17                 if 5*x+3*y+z/3==100 and x+y+z==100:
18                     print(x,y,z)
19 #########################################
20 while True:
21     try:
22         input()
23     except:
24         break
25 
26 for x in range(20):
27     yushu = (100 - 7 * x) % 4
28     if yushu == 0:
29         y = (100 - 7 * x) // 4
30         z = 100 - x - y
31         if z >= 0 and y >= 0:
32             print(x, y, z)
33 #########################################
34 try:
35 
36     n = int(input())
37     for x in range(21):
38         for y in range(34):
39             for z in range(0, 100, 3):
40                 if x + y + z == 100 and x * 5 + y * 3 + z / 3 == 100:
41                     print(x, y, z)
42 except:
43     break
44 
45 #########################################
46 # -*-coding:utf-8-*-
47 
48 def Buycheck(num):
49     jiwen = 5
50     muji = 3
51     xiaoji = 1/3
52     for i in range(0,20):
53         for j in range(0,33):
54             for k in range(0,100):
55                 if i+j+k == 100 and i*jiwen+j*muji+k*xiaoji==100:
56                     print("%d %d %d" %(i,j,k))
57 while True:
58     try:
59         input_m = input()
60         if input_m.isdigit():
61             Buycheck(input_m)
62         else:
63             break
64 
65 
66     except:
67         break
68 
69 #########################################
View Code

 

 参考答案

  1 """
  2 思路:
  3 step1:首先输入year、month、day,并用空格隔开,且输入均为int型;
  4 step2:创建一个列表,输入1-12个月的天数;
  5 step3:判断year是闰年还是平年:如果是闰年,则需要把2月的天数改为29;
  6 step4:输出该天是这一年的第几天
  7 
  8 y,m,d = list(map(int,input().split()))
  9 month = [31,28,31,30,31,30,31,31,30,31,30,31]
 10 if y % 400 == 0 or (y % 100 != 0 and y % 4 == 0):
 11     month[1] = 29
 12 print(sum(month[:m-1]) + d)
 13 
 14 print(month[:m-1])
 15 
 16 """
 17 
 18 """
 19 调用datetime库
 20 实现思路
 21 datetime库中的strftime方法支持以天数的方式输出
 22 其中日期格式化符号%j就是天数表示
 23 但是这样输出的结果是从001到366为止的字符串
 24 我们还要从左边去掉所有的0才是最终的结果
 25 """
 26 import datetime
 27 while True:
 28     try:
 29         date = input().split()
 30         year, month, day = int(date[0]), int(date[1]), int(date[2])
 31         if year >=1000:
 32             date = datetime.datetime(year, month, day)
 33             which_day = date.strftime('%j').lstrip('0')
 34             print(which_day)
 35         else:
 36             print("年份不符合,请重新输入")
 37     except:
 38         break
 39 
 40 
 41 
 42 """
 43 方法二:平闰年区别计算
 44 实现思路
 45 我们知道闰年的二月份是29天,平年的二月份是28天
 46 因此在计算某个日子是多少天的时候,要根据平年闰年的不同进行分类塔伦
 47 知道这一点后加和所有的天数即可
 48 """
 49 while True:
 50     try:
 51         y, m, d = map(int, input().split())
 52         month = [31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31]        # 平年的月份
 53         if y % 400 == 0 or (y % 100 != 0 and y % 4 == 0):
 54             month[1] = 29                                              # 闰年的月份
 55         print(sum(month[:m-1]) + d)                                    # 统计时间
 56     except:
 57         break
 58 
 59 ####################################
 60 def leap_year(year):
 61     if (year % 4) == 0:
 62        if (year % 100) == 0:
 63            if (year % 400) == 0:
 64                return 1
 65            else:
 66                return 0
 67        else:
 68            return 1
 69     else:
 70        return 0
 71 
 72 while True:
 73     try:
 74         date_list=input().split()
 75         count_days=0
 76         dic_leap={1:31,2:29,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
 77         dic_nonleap={1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
 78         if leap_year(int(date_list[0]))==1:
 79             for i in range(1,int(date_list[1])):
 80                      count_days+=dic_leap.get(i)
 81             count_days+=int(date_list[2])
 82         else:
 83             for i in range(1,int(date_list[1])):
 84                      count_days+=dic_nonleap.get(i)
 85             count_days+=int(date_list[2])
 86         print(count_days)
 87     except:
 88         break
 89 
 90 ####################################
 91 try:
 92     year, month, day = [int(i) for i in input().split()]
 93     total_days = day
 94 
 95     for i in range(2, month + 1):
 96         if i == 3:
 97             if year % 4 == 0 and year % 100 != 0:
 98                 total_days += 29
 99             else:
100                 total_days += 28
101         elif i in [2, 4, 6, 8, 9, 11]:
102             total_days += 31
103         else:
104             total_days += 30
105 
106     print(total_days)
107 
108 except:
109     break
View Code

 

 

 

 

 

 

 

 自己写的代码

 1 def sunmNumber(n):
 2     L1=[]
 3     L2 =[]
 4     L3=[]
 5     if n ==1:
 6         return print(1)
 7     else:
 8         for i in range(1,n**3,2):
 9             L1.append(i)
10         #print(L1)
11 
12         for j in range(len(L1)):
13             L2=L1[j:j+n]
14             #print(L2)
15             if sum(L2)==n**3:
16                 L3=L1[j:j + n]
17                 #print(L3)
18 
19         return print('+'.join(str(x) for x in L3))
20 
21 while True:
22     try:
23         n = int(input())
24         s =sunmNumber(n)
25     except:
26         break
View Code

 

 1 def sunmNumber(n):
 2     L1=[]
 3     L2 =[]
 4     L3=[]
 5     if n ==1:
 6         return print(1)
 7     else:
 8         for i in range(1,n**3,2):
 9             L1.append(i)
10         #print(L1)
11 
12         for j in range(len(L1)):
13             L2=L1[j:j+n]
14             #print(L2)
15             if sum(L2)==n**3:
16                 L3=L1[j:j + n]
17                 #print(L3)
18 
19         return print('+'.join(str(x) for x in L3))
20 
21 while True:
22     try:
23         n = int(input())
24         s =sunmNumber(n)
25     except:
26         break
27 
28 
29 while True:
30     try:
31         m = int(input())
32         l = [i for i in range(m*(m-1)+1,m*(m+1)) if i%2 !=0]
33         print('+'.join(map(str,l)))
34     except:
35         break
36 
37 while True:
38     try:
39         n = int(input())
40         l = [i for i in range(1, n**3+1) if i%2 != 0]
41         for i in range(len(l)):
42             if sum(l[i:n+i]) == n**3:
43                 print('+'.join(map(str,l[i:n+i])))
44     except:
45         break
46 
47 
48 while True:
49     try:
50         n = int(input())
51         last = 1
52         for i in range(2,n+1): #求得相加之后的最后一个数
53             last+=2*i
54         tmp = []
55         for i in range(1,n+1): #将相加的数放在列表中
56             tmp.append(last)
57             last-=2
58         tmp = tmp[::-1] #顺序翻转一下
59         for i in tmp[:-1]: #打印前n-1个数以加号隔开
60             print(i,end='+')
61         print(tmp[-1]) #打印最后一个数
62     except:
63         break
64 
65 
66 
67 num = int(input())
68 if num % 2 == 0:
69     lis = [i for i in range(1, num + 1) if i % 2 == 1]
70     lis1 = []
71     for n in lis:
72         lis1 += [num ** 2 - n]
73         lis1 += [num ** 2 + n]
74 elif num % 2 == 1:
75     lis = [i for i in range(1, num + 1) if i % 2 == 0]
76     lis1 = [num ** 2]
77     for m in lis:
78         lis1 += [num ** 2 - m]
79         lis1 += [num ** 2 + m]
80 lis1.sort()
81 lis2 = "+".join(list(map(str, lis1)))
82 print(lis2)
View Code

 

 

 

 

 自己的

 1 #####这样的方式是输入方式与题目不符合,必须使用map和切割字符串的方式
 2 # while True:
 3 #     try:
 4 #         n1 = int(input())
 5 #         data1,data2,data3 = [],[],[]
 6 #         for i in range(n1):
 7 #             data1.append(int(input()))
 8 #
 9 #         n2 = int(input())
10 #         for i in range(n2):
11 #             data2.append(int(input()))
12 #
13 #         data3 = list(set(data1+data2))
14 #         print(''.join(str(x) for x in sorted(data3)))
15 #     except:
16 #         break
17 
18 
19 while True:
20     try:
21         n1 = int(input())
22         data1=list(map(int,input().split()))
23 
24         n2 = int(input())
25         data2=list(map(int,input().split()))
26 
27         data3 = list(set(data1+data2))
28         print(''.join(str(x) for x in sorted(data3)))
29     except:
30         break
View Code

参考

while True:
    try:
        n1 = int(input("输入第一个数组的个数:"))
        data1,data2,data3 = [],[],[]
        for i in range(n1):
            data1.append(int(input("输入第一个数组的数值:")))
        #print(data1)

        n2 = int(input("输入第二个数组的个数:"))
        for i in range(n2):
            data2.append(int(input("输入第二个数组的数值:")))
        #print(data2)

        data3 = list(set(data1+data2))

        # for j in data1:
        #     if j not in data3:
        #         data3.append(j)
        # #print(data3)
        # for K in data2:
        #     if K not in data3:
        #         data3.append(K)
        #print(data3)
        #print(sorted(data3))
        print(''.join(str(x) for x in sorted(data3)))
    except:
        break


############这个是有个问题,为什么怎么控制输入数字的数量
while 1:
    try:
        s0,s1,s3,s2 = input(), input().split(), input(), input().split()
        s = map(str,sorted(map(int, set(s1+s2))))
        print(''.join(s))
    except:
        break

##################################
while True:
    try:
        first_num = int(input())
        first_list = list(map(int, input().split(" ")))
        second_num = int(input())
        second_list = list(map(int, input().split(" ")))

        total_list = first_list + second_list
        total_list = list(set(total_list))
        total_list.sort()
        res = ''.join(list(map(str, total_list)))
        print(res)
    except EOFError:
        break

###################################################333
while True:
    try:
        a = input()
        b = map(int, input().split())
        c = input()
        d = map(int, input().split())
        e = []
        # 找到不重复的元素,放入空数组
        for i in b:
            if i not in e:
                e.append(i)
        for i in d:
            if i not in e:
                e.append(i)
        # 升序排列,无连接符
        print(''.join(map(str, sorted(e))))


    except:
        break

###############################################3
View Code

 

posted on 2022-04-06 21:56  pf42280  阅读(66)  评论(0)    收藏  举报