筆試題 美團 二分法求開方(Python)

2021-09-26 16:22:05 字數 3034 閱讀 4027

2:題目:根據所輸入的月份,年份輸出當月的實際天數

3:【浦發】

給定乙個整數,求其開方後的整數字

1)分析思路
1)x ^2 = n, 故採用二分法解決

2)如:n =7

0,1,2,3,4,5,6,7

(0+7)/2 = 3, 3^2 = 9 >7 (因此,開方後的值小於3,所以下次的搜尋範圍左調縮減到[0,2])

(0+2)/2 = 1,1^2 = 1<7 (因此開方後的的值大於1,所以下次的搜尋範圍右調縮減到[2,2])

因此,開方後的值為 2

3)x ^2 = n, 故 n 的開方為 x

切記:當不知道迴圈次數時,使用為了while迴圈

2)**
import sys

n =int

(input()

)#一般採取動態輸入

deffsear

(n):

left =

0 right = n

while left <= right:

#不知道迴圈次數就用while

mid =

int(

(left + right)/2

)if mid**

2< n and

(mid+1)

**2> n:

return mid

elif mid**

2< n:

left = mid +

1elif mid**

2> n:

right = mid-

1else

:return mid

print

(fsear(n)

)

結果:

3

1

1)思路分析
1:分析1-12月的天數,只有2月的天數是不確定的

[1,3,5,7,8,10,12]月的天數是31天

[4,6,9,11]月的天數為30天

如果判斷 2月的天數要根據是否閏年:如果當年是閏年的話是29天內,否則28天

2:閏年的判斷方法:

法1):如果年份 %4 ==0 ,此年為閏年

法2) :如果年份 %100 ==0 and %400 ==0 ,此年為閏年

總結:

2:**
mouth =

int(

input

('請輸入月份:'))

years =

int(

input

('請輸入某一年:'))

defjud

(mouth,year)

:if mouth in[1

,3,5

,7,8

,10,12

]:print

('本月有31天!'

)elif mouth in[4

,6,9

,11]:

print

('本月有30天!'

)else

:if year %4==

0:if(mouth==2)

:print

('本月有29天!'

)#閏年29天

elif year%

100==0:

if year %

400==0:

if(mouth==2)

:print

('本月有29天!'

)else

:print

('月份輸入有誤'

)else:if

(mouth==2)

:print

('本月有28天!'

)else

:print

('月份輸入有誤'

)

jud(mouth,years)

1:題目描述:回文素數

如果乙個整數智慧型被1 和自己整除,就稱這個數為素數數。

如果乙個數正著反著都是一樣,就稱這個數為回文數,例如。6,66,606,6666

如果乙個數字既是素數也是回文數,就成為回文素數

現在給定以個區間[l,r],希望你能求出在這個區間內與多少個回文素數。

輸入:100 150

輸出:2

2:**

from math import sqrt

defsushu

(w):

leap =

0for x in

range(2

,int

(sqrt(w))+

1):if w % x ==0:

break

else

: leap =

1return

(leap)

defjudge1

(a1,a2)

: num =

0for i in

range

(a1,a2+1)

:if(i%10!=0

):n1=i%10*

100 n2=

int(i/10)

%10*10

#/:整除,結果包含小數點為,而// 整除,結果不包含小數點位

n3=int(i/

100)

new1 = n1+n2+n3

if(new1 == i)

:#以上判斷是否為回文,下來判斷是否為素數

nihao = sushu(i)

num = num + nihao

return

(num)

start1 =

100ends =

150num1 = judge1(start1,ends)

print

(num1)

結果:

2

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

求方程根 (二分法)

二分法求方程的根 求下面方程的乙個根 f x x3 5x2 10x 80 0 若求出的根是a,則要求 f a 10 6 解法 對f x 求導,得f x 3x2 10x 10。由一元二次方程求根公式知方呈f x 0 無解,因此f x 恆大於0。故f x 是單調遞增的。易知f 0 0且f 100 0,所...