当前位置:网站首页>7-7 7003 combination lock (PTA program design)

7-7 7003 combination lock (PTA program design)

2022-07-06 13:56:00 Programming Lindaiyu

Now school begins on a weekday . Their dormitory is locked with a password ( See figure ) lock . He knows that the password is three logarithm , Such as 36-23-12, At the same time, know the method of unlocking . Its method :
(1) First turn clockwise for two turns .
(2) Turn counterclockwise to the position of the first number .
(3) Turn counterclockwise .
(4) Rotate clockwise to the second number .
(5) The pointer turns counterclockwise to the third number .
Know the initial position and password of the pointer , Ask how many degrees to unlock .

Input format :

There are multiple sets of data , Each group of data contains four numbers , Namely n,fisrt,middle,last, Are less than 40(n Is the starting position ) Greater than 0 Of . When the input is “0 0 0 0” when , end .

Output format :

Output the degree of rotation .

sample input :

0 30 0 30
5 35 5 35
0 20 0 20
7 27 7 27
0 10 0 10
9 19 9 19
0 0 0 0

sample output :

1350
1350
1620
1620
1890
1890

Code (Python):

d=[]  # A list for storing results 
n,first,middle,last=map(int,input().split())
def func(first,last):  # Set function , Used to calculate degrees 
    if first<=last:    # There are two cases , If the initial position is small , Normal minus 
        return (last-first)*9  #9 Is the degree represented by each scale 
    else:  # If the initial position is large , It means that I passed 0 scale , You can't reduce it directly 
        return (40-first+last)*9  # First use 40 Subtract the end scale , Plus the initial scale is the total scale , multiply 9 Convert to degrees 
while 1:
    if n==0 and first==0 and middle==0 and last==0:  # When the input is “0 0 0 0” when , end 
        break
    else:  # Otherwise, the input is not “0 0 0 0” when , Start calculating 
        res=0  #res It is the result of the number of each group 
        res+=720  #(1) First turn clockwise for two turns .
        res+=func(first,n)  #(2) Turn counterclockwise to the position of the first number . Anticlockwise, use the end to subtract the beginning 
        res+=360  #(3) Turn counterclockwise .
        res+=func(first,middle)  #(4) Rotate clockwise to the second number . Clockwise, use the beginning minus the end 
        res+=func(last,middle)  #(5) The pointer turns counterclockwise to the third number . Anticlockwise, use the end to subtract the beginning 
        d.append(res)  # Store the results of the calculation of each group in the list , So that they can be output together 
        n,first,middle,last=map(int,input().split())  # Continue to enter in order to enter the next cycle 
for i in range(len(d)):  # Output results 
    print(d[i])

When I first saw this problem, I thought it was very difficult , Because it looks complicated . But I still tried it , It's not difficult to find , Is the most basic mathematical knowledge , There is no hard Algorithm . therefore , When you come across a seemingly difficult problem , And don't give up , Try to do it , To analyze , Maybe it's not very difficult , Or maybe it's really a little difficult , But how do you know if you will not try , What if you make it yourself ? So don't set limits on yourself , Try boldly , To challenge .

The above program gives more detailed comments , For novice Xiaobai's reference . The idea of program design or code implementation is not optimal , You are welcome to correct your mistakes or give better ideas .

I am a rookie who wants to be Kunpeng , Everyone's encouragement is my driving force , Welcome to like collection comments !

原网站

版权声明
本文为[Programming Lindaiyu]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060917047184.html