物聯(lián)網(wǎng)網(wǎng)絡(luò)OJ復(fù)習(xí)解析_第1頁
物聯(lián)網(wǎng)網(wǎng)絡(luò)OJ復(fù)習(xí)解析_第2頁
物聯(lián)網(wǎng)網(wǎng)絡(luò)OJ復(fù)習(xí)解析_第3頁
物聯(lián)網(wǎng)網(wǎng)絡(luò)OJ復(fù)習(xí)解析_第4頁
物聯(lián)網(wǎng)網(wǎng)絡(luò)OJ復(fù)習(xí)解析_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、針對做過去的一些通過率低的題做了一個World,大家可以看看,不會的話可以問問我或者前面的同學(xué),這些弄懂的話,考試把握也很大了Problem E: 一年中的第幾天Time Limit: 1 Sec Memory Limit: 2 MBSubmit: 1873 Solved: 645Submit Status Web BoardDescriptio n給出某個日期,判斷這是當(dāng)年的第幾天,每年的1月1日是第1天,非閏年年份的12月31 日是第365天。In put輸入的第一個數(shù)為n,后接n個日期。日期用3個正整數(shù)按順序表示年月日,中 間用“-”連接。Output若輸入的日期為錯誤,則輸出“ err

2、or date! ”;否則輸出這個日期是本年的第 幾天。每個日期對應(yīng)一行輸出。Sample Input92010- 01-012010- 06-222010- 12-312011- 02-292011- 07-182011- 12-022012- 02-292012- 09-312012- 12-31Sample Output1173365error date!19933660error date!366HINT抽象出判斷閏年和判斷日期合法性的兩個函數(shù),能夠大大降低程序設(shè)計過程中 的思維復(fù)雜程度。Append Code這題除了一次一次的加,可以用更簡便的方法哦#i ncludeint main

3、()int year,m on th,day;int i,sum;int M15=0,31,0,31,30,31,30,31,31,30,31,30,31;scan f(%d-%d-%d, &year,&mo nth,&day);if(year%4=0&year%100!=0)|(year%400=0) M2=29; else M2=28;for(i=1,sum=0;ieSCITECHCOMCS106SE309CS101TonP 887766554433Jerry50100&010050100Zhang39095. 560758218Li4384562297485fangS8875633&99

4、33. 3Zhao6999999; .597. 542100Llu7808080- 581, 582. 583Iang8765432Song9102030405060MalO7479. 573717077你的任務(wù)是:輸入這樣的成績表, 成績。如卜表所示。統(tǒng)計出每個學(xué)生的總成績和各個科目的平均naeSCITECHC0Ir CS106SE309CS101SU*ToP8877P665544333&3Jerry501006010050100460Zhang39095. 560758218420. 5Lil384562297485333VangS887563369933. 3394. 3Zhao6999

5、999. 597- 542100537Liu7808080. 581. 582. 583487. 5Tang876543227Song9102030405060210lalO7479. 573717077444- 5average62. 467- 759. 958- 959. 659. 1In put第一行為兩個整數(shù) m,n, 0m=50 0*=10,表示有m個學(xué)生和n個成績。 后面有m+行n+1列的一個表,表的第1行和第1列都是不含空白符的字符串,表 的各列用若干空格分隔,表的各行用一個回車分隔。第1行的2n+1列是各個科目的名字。第2m+行 1列為學(xué)生姓名。第2行2列開始到第m+行、n+1

6、列為各學(xué) 生的各科目成績(浮點數(shù))。Output輸出為一張表,表的大小為 m+2亍、n+2列,其中前m+行 n+1列的數(shù)據(jù)與輸入相 同。表的最右側(cè)一列為學(xué)生各科目成績的總和,該列第1行的標題是“ sum”。表的最下面一行為各科目的所有學(xué)生平均成績, 該行的第1列標題是“ average ” 表的第1列輸出為8個字符左對齊,后面每列為5個字符右對齊,兩列之間有2個 空格。表的所有數(shù)據(jù)項(除第1行和第1列外)都輸出為保留1位小數(shù)。表的每行 用一個回車分隔,表的最右邊一列的數(shù)據(jù)項后沒有空格。請注意:表的最右下角那項沒有定義,不輸出!最后1行的輸出至最右一個科目的平均分結(jié)束,該行最后有回車。Sampl

7、e Input10 6n ameSCI TECH COM CS106 SE309 CS101Tom887766554433Jerry501006010050100Zhang3:9095.56C)758218Li4 384562297485Wan g5887563369933.3Zhao6999999.597.542100Liu78080 80.581.582.583Wan g8765432Song9102030405060Ma107479.573717077Sample Outputn ame SCI TECH COM CS106 SE309 CS101 sumTom88.077.066.05

8、5.044.033.0 363.0Jerry50.0 100.060.0100.050.0100.0 460.0Zhang390.095.560.075.082.018.0 420.5Li438.0 45.0 62.0 29.0 74.0 85.0 333.0Wan g588.075.063.036.099.033.3 394.3Zhao699.099.099.597.542.0100.0 537.0Liu780.0 80.0 80.5 81.5 82.5 83.0 487.5Wan g87.06.05.04.03.0 2.0 27.0Song910.020.030.040.050.060.0

9、 210.0Ma1074.079.573.071.070.077.0 444.5average62.467.759.958.959.659.1HINTAppend Code這題的會了的話,輸出格式之類的問題應(yīng)該沒有問題了。這里的話,給一種最簡便的方法吧,這題還可以使用結(jié)構(gòu)體做,更加直觀#i nclude#i nclude#i ncludein tmai n()in tm, n;chara6060;charb6060;doublec6060;doublesum60;doubleaverage60,avsum60;in ti,j,k,l;scan f(%d%d,&m,&n);for(i=0;i=n

10、 ;i+)scan f(%s,ai);for(i=1;i=m;i+)sca nf(%s,bi);for(j=1,sumi=0;j=n;j+)sca nf(%lf,&cij);sumi=cij+sumi;for(j=1;j=n ;j+)for(i=1,avsumi=0;i=m;i+)avsumj=avsumj+cij;averagej=1.0*avsum|j/m;prin tf(%-8s ,a0);for(i=1;i=n ;i+)prin tf(%5s ,ai);prin tf(%5s,sum);prin tf(n);for(i=1;i=m;i+)prin tf(%-8s ,bi);for(j=

11、1;j=n ;j+)prin tf(%5.1f ,cij);prin tf(%5.1f,sumi);prin tf(n);prin tf(%-8s average);for(i=1;i n;i+)prin tf(%5.1f ,averagei);prin tf(%5.1f average n);Problem F:編寫函數(shù):素數(shù)的判定 (Appe nd Code)Time Limit: 3 Sec Memory Limit: 16 MBSubmit: 1728 Solved: 570Submit Status Web BoardDescriptio n一個正整數(shù)n是素數(shù):除了 1和n不能被其他

12、數(shù)整除。1不是素數(shù)編寫一個函數(shù)用于判定一個正整數(shù)是不是素數(shù)。 用C語言實現(xiàn):append.c中函數(shù)原型為 int is_primer(i nt nu m);功能:若num為素數(shù)返回1,否則返回0。用C+實現(xiàn):append.cc中函數(shù)原型為 bool isPrimer(i nt nu m);功能:若num為素數(shù)返回true,否則返回false 函數(shù)的調(diào)用格式見“ Append Code”In put每行輸入一個正整數(shù)n。 n不會超出int類型數(shù)據(jù)范圍。 輸入最多不超過20個正整數(shù)。Output若n為素數(shù),輸出“ YES,否則輸出“ NO。Sample Input12345678921474836

13、47Sample OutputNOYESYESNOYESNOYESNONOYESHINT如果你是按照從小到大的順序選擇除數(shù)去判定一個數(shù),那么你超時的原因多半 是用了太多不必要的除數(shù)。程序需要優(yōu)化,減少循環(huán)的次數(shù)。Append Codeappend.c, append.cc ,經(jīng)典的素數(shù)判定注意判定的方法! #i nclude#in cludein tis_primer(i ntnum);in tis_primer(i ntnum)inti;if(num=1)return0;elseif( num=2) retur n1;elseif( nu m%2=0)retur nO; elsefor(i=

14、2;isqrt (num)returnl;in tmai n()intnum;while(sca nf(%d, &num) != EOF)if(is_primer( nu m)puts(YES);elseputs(NO);return。;Problem D:只有一個二元運算符的表達式運算Time Limit: 1 Sec Memory Limit: 2 MBSubmit: 4119 Solved: 1563Submit Status Web BoardDescriptio n編程序讀入并計算只有一個二元運算符的表達式的值。用到的二元運算符有:“ +”、“ - ”、“ * ”、“ /”、“ %,

15、與 C 語言的語法一致。In put每行輸入一個表達式,格式為:二個整型的操作數(shù)a和b,中間用一個符號分開, 這個符號就是運算符。測試樣例不存在除數(shù)為 0的情況。輸入以a和b為0,且用一個空格分開結(jié)束。Output每行對應(yīng)輸入的運算符為“ +”、“ - ”、“ *,則計算a+b、a-b、a*b、a/b、a%b 的值;否則輸出 “ in valid op ”。Sample Input33+58*92.21-617/39%3 0 0Sample Output3872in valid op-550HINT教材上有非常相似的例題可以參考Append Code這個沒什么說的,看看吧,練習(xí)判斷的#i nc

16、lude in tma in()in ta,b;chare;for(;sca nf(%d%c%d,&a,&c,&b);) if(a=O&c= &b=O)break; elseif(c=+)pri ntf(%dn,a+b); elseif(c=-)pri ntf(%dn,a-b); elseif(c=*)pri ntf(%dn,a*b); elseif(c=/)pri ntf(%dn,a/b); elseif(c=%)pri ntf(%dn,a%b); elsepri ntf(i nv alid opn);Problem D:攝氏華氏溫度轉(zhuǎn)換表Time Limit: 1 Sec Memory L

17、imit: 2 MBSubmit: 5380 Solved: 1412Submit Status Web BoardDescriptio n已知華氏溫度F,轉(zhuǎn)換為攝氏溫度C的公式為C=(F-32)*5/9 。輸出給定范圍(從low到high )和步長(step )的攝氏華氏溫度轉(zhuǎn)換表In put第1行若為“ C-F”表示輸出:攝氏一一華氏溫度轉(zhuǎn)換表,若為“F-C”表示輸出:華氏攝氏溫度轉(zhuǎn)換表。第2、3行為兩個整數(shù):high和low,其值在-100到200之間。第4行為step,step精確到小數(shù)點后1位。Output輸出第一行為C和F,分別表示攝氏和華氏,與小數(shù)點對齊。若輸出攝氏華氏溫度轉(zhuǎn)換表

18、,則C在前、F在后;反之,則輸出華氏一一攝氏溫度轉(zhuǎn)換表。 從輸出的第2行開始為從溫度low到溫度high (包括low和high )的轉(zhuǎn)換表, 溫度輸出精確到小數(shù)點后1位,表格被“- ”分為兩個寬度相同的部分,其它的 測試樣例也不會給出超出寬度的數(shù)據(jù),格式詳見sample。Sample InputC-F-10402.5Sample OutputC -F10.0-14.0-7.5 -18.5-5.0 -23.0-2.5 -27.50.0 -32.02.5 -36.55.0 -41.07.5 -45.510.0-50.012.5-54.515.0-59.017.5-63.520.0-68.022.

19、5-72.525.0-77.027.5-81.530.0-86.032.5-90.535.0-95.037.5-99.540.0- 104.0HINT輸出格式可以通過sample分析出來,因為兩欄的總寬度是固定的。一個隱藏的 陷阱是step是浮點數(shù),某些浮點數(shù)是無法精確存儲的,因此經(jīng)過一定量的計算 后這個誤差會影響到浮點數(shù)的相等性判斷,需要加上精度控制。Append Code這個精度控制的,需要好好看看!作業(yè)做出來的人不多!#i nclude in tmai n()doublelow,high,step,i,C,F;chara,b;scan f(%c%*c%*c%c,&a,&b);if(a=C

20、&b=F)sca nf(%lf%lf%lf,&low,&high,&step); prin tf( C -Fn);for(C=low;C%6.1fn,C,F);if(a=F&b=C)sca nf(%lf%lf%lf,&low,&high,&step); printf( F -Cn);for(F=low;F%6.1fn,F,C);return。;Problem E: 1!+2!+k!=?Time Limit: 1 Sec Memory Limit: 2 MBSubmit: 4114 Solved: 1376Submit Status Web BoardDescriptio n求1!+2!+k!=

21、?,并判斷是否溢出。In put輸入為一個正整數(shù)k。Output若1!+2!+k!的值溢出unsigned (無符號整型)的范圍輸出“ overflow ”,否 則輸出1!+2!+k!的結(jié)果。Sample In put5Sample Output153HINT如果一個值溢出某個變量的數(shù)據(jù)類型存儲范圍,但仍然存入該變量,那么存入 該變量中的值實際上是什么?Append Code這個題當(dāng)年坑了多少人。00#i ncludein tma in() in tk,i,j,m,sum=O;scan f(%d,&k);if(k=13)pri ntf(overflow);elsefor(i=1;i=k;i+)

22、for(j=1,m=1;j0)prin tf(%d,sum);Problem F:十進制整數(shù)轉(zhuǎn)二進制Time Limit: 1 Sec Memory Limit: 2 MBSubmit: 3274 Solved: 1617Submit Status Web BoardDescriptio n給出一個十進制的非負整數(shù)x, x=216,把它轉(zhuǎn)換成二進制數(shù)輸出In put輸入為多行,每行一個整數(shù)x,至讀入EOF結(jié)束。Output每行輸出x對應(yīng)的二進制數(shù)值。Sample Input133365535Sample Output0111100001HINT本題有多種解法:可以用循環(huán)迭代對 2的除法和取余操

23、作,不過處理的順序與輸 出順序相反,需要利用數(shù)組存儲;用取對數(shù)或從大到小減去2的整數(shù)次幕的方法計算與輸出順序是相同的;也可以用printf()把十進制的數(shù)值處理成十六進制,然后1位十六進制轉(zhuǎn)4位二進制;也可以用位運算處理。Append Code求2進制的方法至少要會一個,這個是逆序輸出法#i ncludein tmai n()in ta100;in tb,i,j;while(sca nf(%d,&b)!=EOF)if(b=1)pri ntf(1n);elsefor(i=0;i+) ai=b%2;b=b/2;if(b=2)c ontinue;if(b=l)pri ntf(1);for(j=i;j

24、=0;j-)prin tf(%d,aj);prin tf(n);break;Problem C:數(shù)組去重Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1366 Solved: 764Submit Status Web BoardDescriptio n現(xiàn)有一個非減序排序的一維數(shù)組,其中有若干元素是重復(fù)的。編程將重復(fù)元素刪除掉若干個,僅保留1個,使數(shù)組中沒有重復(fù)元素。In put輸入有多行。第一行MQ表示之后有M行輸入。之后的M行輸入是若干個一維數(shù)組。每行的第一個數(shù)據(jù) ONv=1OO0表示該數(shù)組 有N個整數(shù)。其后是按照非減序排好的 N個整數(shù),每個元素

25、均在int類型的表 示范圍之內(nèi)。每行的所有數(shù)據(jù)兩兩之間用一個空格隔開。Output輸出有M行,每行輸出與上述M組輸入對應(yīng),是其輸入數(shù)組去重后的結(jié)果。輸出的數(shù)據(jù)需按照遞增序排列,且每兩個數(shù)組元素之間用一個空格隔開。Sample In put210 0 0 0 0 0 1 3 3 4 410 1 2 3 4 5 6 7 8 9 10Sample Output0 1 3 41 2 3 4 5 6 7 8 9 10Append Code這個也看看吧!我寫的比較麻煩,有好的想法也可以傳到群里#i ncludein tmai n()in tN, n,i,j,k,t;in ta2000=-1;scan f(

26、%d,&N);for(i=1;i=N;i+)a0=-1;sea nf(%d,&n);for(j=1;j=n ;j+)sea nf(%d,&k);ak=k;if(a0=0)prin tf(0);for(j=1;jv=1005;j+)if(aj!=0)printf( %d,aj);if(a0!=0)for(j=1;j=1005;j+)if(aj!=0) pri ntf(%d,aj);break;for(t=j+1;t=1005;t+)if(at!=0)printf( %d,at);prin tf(n);for(j=0;jv=1005;j+)aj=0;Problem F: Matrix Proble

27、m (III) : Array PracticeTime Limit: 1 Sec Memory Limit: 4 MBSubmit: 2158 Solved: 581Submit Status Web BoardDescriptio n求兩個矩陣A、B的乘積C=AB根據(jù)矩陣乘法的定義,只有 A的列數(shù)和B的行數(shù) 相同才能相乘。可以確保所有運算結(jié)果都在int類型的范圍之內(nèi)。In put輸入數(shù)據(jù)為多個矩陣(最少2個),每個矩陣以兩個正整數(shù) m和n開始,滿足 0m,*=100,接下來為一個m行n列的矩陣A。當(dāng)輸入的m和n均為0時,表示 輸入數(shù)據(jù)結(jié)束。Output對輸入的矩陣兩兩相乘:第1個和第2個相乘、第1個和第2個相乘的結(jié)果和第3個 相乘按順序輸出矩陣相乘的結(jié)果:每行兩個元素之間用一個空格分開,每 行最后一個元素之后為一個換行,在下一行開始輸出矩陣的下一行。若前k個矩陣相乘的結(jié)果和第k+1個矩陣無法相乘(即不滿足矩陣乘法定義),貝U輸出“ Not satisfied the defi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論