演算法筆記ch3

2021-10-11 18:51:25 字數 1395 閱讀 6594

題目描述

有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的,則規定它們之間的天數為兩天。

解題思路

這種求日期之間相差天數的題目有乙個很直接的思路,即令日期不斷加1天,直到第乙個日期等於第二個日期為止,即可統計出答案。如果想要加快速度,只需要先把第乙個日期的年份不斷加1,直到與第二個日期的年份相差為1為止。

#include

int month[13]

[2]=

,,,,

,,,,

,,,,

};bool

isleap

(int year)

intmain()

y1 = time1 /

10000

; m1 = time1 %

10000

/100

; d1 = time1 %

100;

y2 = time2 /

10000

; m2 = time2 %

10000

/100

; d2 = time2 %

100;

int ans =1;

// 加速計算相差年份

while

(y1 < y2 -1)

// 統計相差天數

while

(y1 < y2 || m1 < m2 || d1 < d2)

if(m1 ==13)

ans++;}

printf

("%d\n"

, ans);}

return0;

}

問題描述

將乙個p進製數x轉換為十進位制數y。

求解過程一般分為以下兩步:

(1) 將p進製數x轉換為十進位制數y。

int y =

0, product =1;

while

(x !=0)

(2) 將十進位制數y轉換為q進製數z(除基取餘法)。

int z[40]

, num =0;

dowhile

(y !=0)

;

這樣z陣列從高位z[num - 1]到低位z[0]即為q進製z,進製轉換完成。值得注意的是,**中使用do…while語句而不是while語句的原因是:如果十進位制數y恰好等於0,那麼使用while語句將使迴圈直接跳出,導致結果出錯(正確結果應當是陣列z中存放了z[0] = 0)。

資料元素 ch3 測試

1.4個元素按a,b,c,d順序連續進s棧,進行pop s,x 運算後,x的值是 c d a.ab.b c.cd.d 1 進棧 push 演算法 若top n時,則給出溢位資訊,作出錯處理 進棧前首先檢查棧是否已滿,滿則溢位 不滿則作 置top top 1 棧指標加1,指向進棧位址 s top x,...

C語言知識串講(CH3)

掌握 1.資料輸出 putchar 函式,printf函式 2.資料輸入 getchaar函式,scanf函式。1 結構化程式設計所規定的三種基本控制結構是 順序 選擇 迴圈 2 有如下語句 scanf a d,b d,c d a,b,c 為使變數a 2,b 3,c 4,從鍵盤輸入資料的正確形式應是...

ch3 數學 尤拉函式

1.自然語言描述 自然數n的尤拉函式指1 n之間所有與n互質的數的個數 比如,6的尤拉函式值為2。尤拉函式表示式 phi n n 1 1 p1 1 1 p2 1 1 p3 1 1 pk p為質因子的底數。用容斥原理證明 展開這個表示式,phi n n n p1 n p2 n pk n p1p2 n ...