




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、101:雞兔同籠描述一個(gè)籠子里面關(guān)了雞和兔子(雞有2只腳,兔子有4只腳,沒有例外)。已經(jīng)知道了籠子里面腳的總數(shù)a,問籠子里面至少有多少只動(dòng)物,至多有多少只動(dòng)物輸入第1行是測試數(shù)據(jù)的組數(shù)n,后面跟著n行輸入。每組測試數(shù)據(jù)占1行,每行一個(gè)正整數(shù)a (a < 32768)輸出輸出包含n行,每行對(duì)應(yīng)一個(gè)輸入,包含兩個(gè)正整數(shù),第一個(gè)是最少的動(dòng)物數(shù),第二個(gè)是最多的動(dòng)物數(shù),兩個(gè)正整數(shù)用一個(gè)空格分開如果沒有滿足要求的答案,則輸出兩個(gè)0。樣例輸入2320樣例輸出0 05 10代碼#include<stdlib.h>#include<stdio.h>int main() int m;
2、int n; int min,max; scanf("%d",&m); for(int i=0;i<m;i+) scanf("%d",&n); if(n%2!=0) printf("0 0n"); else min=n/4+(n%4)/2; max=n/2; printf("%d %dn",min,max); /system("pause");104:distance on chessboard描述國際象棋的棋盤是黑白相間的8 * 8的方格,棋子放在格子中間。如下圖所示:王
3、、后、車、象的走子規(guī)則如下:· 王:橫、直、斜都可以走,但每步限走一格。· 后:橫、直、斜都可以走,每步格數(shù)不受限制。車:橫、豎均可以走,不能斜走,格數(shù)不限。 象:只能斜走,格數(shù)不限。寫一個(gè)程序,給定起始位置和目標(biāo)位置,計(jì)算王、后、車、象從起始位置走到目標(biāo)位置所需的最少步數(shù)。輸入第一行是測試數(shù)據(jù)的組數(shù)t(0 <= t <= 20)。以下每行是一組測試數(shù)據(jù),每組包括棋盤上的兩個(gè)位置,第一個(gè)是起始位置,第二個(gè)是目標(biāo)位置。位置用"字母-數(shù)字"的形式表示,字母從"a"到"h",數(shù)字從"1"到
4、"8"。輸出對(duì)輸入的每組測試數(shù)據(jù),輸出王、后、車、象所需的最少步數(shù)。如果無法到達(dá),就輸出"inf".樣例輸入2a1 c3f5 f8樣例輸出2 1 2 13 1 1 inf代碼#include <stdio.h>#include <math.h>#include <stdlib.h>int main() int ncases, i; scanf("%d", & ncases); for(i = 0; i < ncases; i+) char begin5, end5; scanf(&qu
5、ot;%s %s",begin,end); int x,y; x = abs (begin0 - end0); y = abs (begin1 - end1); if(x = 0 && y = 0) printf("0 0 0 0n"); else if(x < y) printf("%d", y); else printf("%d", x); if(x = y | x = 0 | y = 0) printf(" 1"); else printf(" 2"); i
6、f(x = 0 | y = 0)printf(" 1"); else printf(" 2"); if(abs(x - y) % 2 !=0)printf(" infn"); else if(x = y) printf(" 1n"); else printf(" 2n"); return 0;105:校門外的樹描述 某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。我們可以把馬路看成一個(gè)數(shù)軸,馬路的一端在數(shù)軸0的位置,另一端在l的位置;數(shù)軸上的每個(gè)整數(shù)點(diǎn),即0,1,2,l,都
7、種有一棵樹。馬路上有一些區(qū)域要用來建地鐵,這些區(qū)域用它們在數(shù)軸上的起始點(diǎn)和終止點(diǎn)表示。已知任一區(qū)域的起始點(diǎn)和終止點(diǎn)的坐標(biāo)都是整數(shù),區(qū)域之間可能有重合的部分?,F(xiàn)在要把這些區(qū)域中的樹(包括區(qū)域端點(diǎn)處的兩棵樹)移走。你的任務(wù)是計(jì)算將這些樹都移走后,馬路上還有多少棵樹。輸入輸入的第一行有兩個(gè)整數(shù)l(1 <= l <= 10000)和 m(1 <= m <= 100),l代表馬路的長度,m代表區(qū)域的數(shù)目,l和m之間用一個(gè)空格隔開。接下來的m行每行包含兩個(gè)不同的整數(shù),用一個(gè)空格隔開,表示一個(gè)區(qū)域的起始點(diǎn)和終止點(diǎn)的坐標(biāo)。輸出輸出包括一行,這一行只包含一個(gè)整數(shù),表示馬路上剩余的樹的數(shù)目
8、。樣例輸入500 3150 300100 200470 471樣例輸出298代碼#include<stdio.h>int main() int l,m;int i; int x,y; int count=0; int a10001; scanf("%d %d",&l,&m); for(i=0;i<=l;i+) ai=1; for(i=0;i<m;i+) scanf("%d %d",&x,&y); for(int j=x;j<=y;j+) if(aj=1) aj=0; for(i=0;i<
9、=l;i+) if(ai=1) count+; printf("%dn",count); return 0; 106:放蘋果描述把m個(gè)同樣的蘋果放在n個(gè)同樣的盤子里,允許有的盤子空著不放,問共有多少種不同的分法?(用k表示)5,1,1和1,5,1 是同一種分法。輸入第一行是測試數(shù)據(jù)的數(shù)目t(0 <= t <= 20)。以下每行均包含二個(gè)整數(shù)m和n,以空格分開。1<=m,n<=10。輸出對(duì)輸入的每組數(shù)據(jù)m和n,用一行輸出相應(yīng)的k。樣例輸入17 3樣例輸出8代碼#include<stdio.h>#include<stdlib.h>
10、int apple(int m,int n);int main() int k; int m,n; scanf("%d",&k); while(k-) scanf("%d %d",&m,&n); printf("%dn",apple(m,n); int apple(int m,int n) if(m=0|n=1) return 1; if(n>m) return apple(m,m); else return apple(m,n-1)+apple(m-n,n);107:迷宮描述一天extense在森林里探
11、險(xiǎn)的時(shí)候不小心走入了一個(gè)迷宮,迷宮可以看成是由n * n的格點(diǎn)組成,每個(gè)格點(diǎn)只有2種狀態(tài),.和#,前者表示可以通行后者表示不能通行。同時(shí)當(dāng)extense處在某個(gè)格點(diǎn)時(shí),他只能移動(dòng)到東南西北(或者說上下左右)四個(gè)方向之一的相鄰格點(diǎn)上,extense想要從點(diǎn)a走到點(diǎn)b,問在不走出迷宮的情況下能不能辦到。如果起點(diǎn)或者終點(diǎn)有一個(gè)不能通行(為#),則看成無法辦到。輸入第1行是測試數(shù)據(jù)的組數(shù)k,后面跟著k組輸入。每組測試數(shù)據(jù)的第1行是一個(gè)正整數(shù)n (1 <= n <= 100),表示迷宮的規(guī)模是n * n的。接下來是一個(gè)n * n的矩陣,矩陣中的元素為.或者#。再接下來一行是4個(gè)整數(shù)ha, l
12、a, hb, lb,描述a處在第ha行, 第la列,b處在第hb行, 第lb列。注意到ha, la, hb, lb全部是從0開始計(jì)數(shù)的。輸出k行,每行輸出對(duì)應(yīng)一個(gè)輸入。能辦到則輸出“yes”,否則輸出“no”。樣例輸入23.#.#.0 0 2 25.#.#.#.#.#.0 0 4 0樣例輸出yesno代碼#include<stdio.h>#include<string.h>#include<stdlib.h>char migong110110;int la,lb,ha,hb;int n;int k;int f(int a,int b) if(a=la&
13、;&b=lb) return 1; if(a<0|a>=n|b<0|b>=n) return 0; if(migongab='#') return 0; if(migongab='.') migongab='#' return f(a-1,b)|f(a+1,b)|f(a,b-1)|f(a,b+1); int main() int i,j; scanf("%d",&k); while(k-) scanf("%d",&n); getchar(); for(i=0;
14、i<n;i+) scanf("%s",migongi); scanf("%d %d %d %d",&ha,&hb,&la,&lb); int b=f(ha,hb); if(migonglalb='#') printf("non"); else if(b=1) printf("yesn"); if(b=0) printf("non"); 301:統(tǒng)計(jì)字符數(shù)描述判斷一個(gè)由a-z這26個(gè)字符組成的字符串中哪個(gè)字符出現(xiàn)的次數(shù)最多輸入第1行是測試數(shù)據(jù)的
15、組數(shù)n,每組測試數(shù)據(jù)占1行,是一個(gè)由a-z這26個(gè)字符組成的字符串每組測試數(shù)據(jù)之間有一個(gè)空行,每行數(shù)據(jù)不超過1000個(gè)字符且非空輸出n行,每行輸出對(duì)應(yīng)一個(gè)輸入。一行輸出包括出現(xiàn)次數(shù)最多的字符和該字符出現(xiàn)的次數(shù),中間是一個(gè)空格。如果有多個(gè)字符出現(xiàn)的次數(shù)相同且最多,那么輸出ascii碼最小的那一個(gè)字符樣例輸入2abbcccadfadffasdf樣例輸出c 3f 4代碼#include<stdio.h>#include<string.h>int main()int a26;int c26;int n,i,j,k,len,t,m;char str1000;scanf("
16、;%d",&n);for(i=0;i<n;i+)int a26=0,c26=0;scanf("%s",str);len=strlen(str);for(j=0;j<len;j+)a(int)(strj-'a')+;for(m=0;m<26;m+)cm=am;for(j=0;j<25;j+)for(k=0;k<25-j;k+)if(ak<=ak+1)t=ak;ak=ak+1;ak+1=t;for(j=0;j<26;j+)if(a0=cj)printf("%c %d",j+97,a0
17、);printf("n");break;return 0;302:487-3279描述企業(yè)喜歡用容易被記住的電話號(hào)碼。讓電話號(hào)碼容易被記住的一個(gè)辦法是將它寫成一個(gè)容易記住的單詞或者短語。例如,你需要給滑鐵盧大學(xué)打電話時(shí),可以撥打tut-glop。有時(shí),只將電話號(hào)碼中部分?jǐn)?shù)字拼寫成單詞。當(dāng)你晚上回到酒店,可以通過撥打310-gino來向gino's訂一份pizza。讓電話號(hào)碼容易被記住的另一個(gè)辦法是以一種好記的方式對(duì)號(hào)碼的數(shù)字進(jìn)行分組。通過撥打必勝客的“三個(gè)十”號(hào)碼3-10-10-10,你可以從他們那里訂pizza。電話號(hào)碼的標(biāo)準(zhǔn)格式是七位十進(jìn)制數(shù),并在第三、第四位數(shù)
18、字之間有一個(gè)連接符。電話撥號(hào)盤提供了從字母到數(shù)字的映射,映射關(guān)系如下:a, b, 和c 映射到 2 d, e, 和f 映射到 3 g, h, 和i 映射到 4 j, k, 和l 映射到 5 m, n, 和o 映射到 6 p, r, 和s 映射到 7 t, u, 和v 映射到 8 w, x, 和y 映射到 9 q和z沒有映射到任何數(shù)字,連字符不需要撥號(hào),可以任意添加和刪除。 tut-glop的標(biāo)準(zhǔn)格式是888-4567,310-gino的標(biāo)準(zhǔn)格式是310-4466,3-10-10-10的標(biāo)準(zhǔn)格式是310-1010。 如果兩個(gè)號(hào)碼有相同的標(biāo)準(zhǔn)格式,那么他們就是等同的(相同的撥號(hào)) 你的公司正在為本
19、地的公司編寫一個(gè)電話號(hào)碼薄。作為質(zhì)量控制的一部分,你想要檢查是否有兩個(gè)和多個(gè)公司擁有相同的電話號(hào)碼。輸入輸入的格式是,第一行是一個(gè)正整數(shù),指定電話號(hào)碼薄中號(hào)碼的數(shù)量(最多100000)。余下的每行是一個(gè)電話號(hào)碼。每個(gè)電話號(hào)碼由數(shù)字,大寫字母(除了q和z)以及連接符組成。每個(gè)電話號(hào)碼中只會(huì)剛好有7個(gè)數(shù)字或者字母。輸出對(duì)于每個(gè)出現(xiàn)重復(fù)的號(hào)碼產(chǎn)生一行輸出,輸出是號(hào)碼的標(biāo)準(zhǔn)格式緊跟一個(gè)空格然后是它的重復(fù)次數(shù)。如果存在多個(gè)重復(fù)的號(hào)碼,則按照號(hào)碼的字典升序輸出。如果輸入數(shù)據(jù)中沒有重復(fù)的號(hào)碼,輸出一行: no duplicates.樣例輸入124873279its-easy888-45673-10-10-1
20、0888-gloptut-glop967-11-11310-ginof101010888-1200-4-8-7-3-2-7-9-487-3279樣例輸出310-1010 2487-3279 4888-4567 3代碼#include<stdio.h>#include<string.h>#include<stdlib.h>char map="22233344455566677778889999"char str80,telnumbers1000009;int compare(const void
21、60;* elem1,const void *elem2)return(strcmp(char *)elem1,(char *)elem2);void standardizetel(int n)int j,k;j=k=-1;while(k<8)j+;if(strj='-')continue;k+;if(k=3) telnumbersnk='-'k+;if(strj>='a' && strj<=
22、'z') telnumbersnk=mapstrj-'a'continue;telnumbersnk=strj;telnumbersnk='0'return;int main()int n,i,j;bool noduplicate;scanf("%d",&n);for(i=0;i<n;i+)scanf("%s",str);standardizetel(i); qsort(telnumbers,n,9,compare);noduplicate=t
23、rue;i=0;while(i<n) j=i;i+;while(i<n && strcmp(telnumbersi,telnumbersj)=0) i+;if(i-j>1)printf("%s %dn",telnumbersj,i-j);noduplicate=false;if(noduplicate)printf("no duplicates.n");return 0;303:子串描述現(xiàn)在有一些由英文字符組成的大小寫敏感的字符串,你的任務(wù)
24、是找到一個(gè)最長的字符串x,使得對(duì)于已經(jīng)給出的字符串中的任意一個(gè)y,x或者是y的子串,或者x中的字符反序之后得到的新字符串是y的子串。輸入輸入的第一行是一個(gè)整數(shù)t (1 <= t <= 10),t表示測試數(shù)據(jù)的數(shù)目。對(duì)于每一組測試數(shù)據(jù),第一行是一個(gè)整數(shù)n (1 <= n <= 100),表示已經(jīng)給出n個(gè)字符串。接下來n行,每行給出一個(gè)長度在1和100之間的字符串。輸出對(duì)于每一組測試數(shù)據(jù),輸出一行,給出題目中要求的字符串x的長度。樣例輸入23abcdbcdffbrcd2roseorchid樣例輸出22代碼304:caesar 密碼描述julius caesar 生活在充滿危
25、險(xiǎn)和陰謀的年代。為了生存,他首次發(fā)明了密碼,用于軍隊(duì)的消息傳遞。假設(shè)你是caesar 軍團(tuán)中的一名軍官,需要把caesar 發(fā)送的消息破譯出來、并提供給你的將軍。消息加密的辦法是:對(duì)消息原文中的每個(gè)字母,分別用該字母之后的第5個(gè)字母替換(例如:消息原文中的每個(gè)字母a都分別替換成字母f),其他字符不 變,并且消息原文的所有字母都是大寫的。 密碼字母:a b c d e f g h i j k l m n o p q r s t u v w x y z原文字母:v w x y z a b c d e f g h i j k l m n o p q r s t u輸入最多不超過100個(gè)數(shù)據(jù)集組成。每
26、個(gè)數(shù)據(jù)集由3部分組成:起始行:start 密碼消息:由1到200個(gè)字符組成一行,表示caesar發(fā)出的一條消息結(jié)束行:end 在最后一個(gè)數(shù)據(jù)集之后,是另一行:endofinput輸出每個(gè)數(shù)據(jù)集對(duì)應(yīng)一行,是caesar 的原始消息。樣例輸入startns bfw, jajsyx tk nrutwyfshj fwj ymj wjxzqy tk ywnanfq hfzxjxendstartn btzqi wfymjw gj knwxy ns f qnyyqj ngjwnfs anqqflj ymfs xjhtsi ns wtrjendstartifsljw pstbx kzqq bjqq ymfy
27、hfjxfw nx rtwj ifsljwtzx ymfs mjendendofinput樣例輸出in war, events of importance are the result of trivial causesi would rather be first in a little iberian village than second in romedanger knows full well that caesar is more dangerous than he代碼#include<stdio.h>#include<stdlib.h>#include&l
28、t;string.h>char mima210;char str110;char str210;int main() a='a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t
29、39;,'u','v','w','x','y','z' b='v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n
30、','o','p','q','r','s','t','u' char a="abcdefghijklmnopqrstuvwxyz" char b="vwxyzabcdefghijklmnopqrstu" while(scanf("%s",str1) char mingwen210="" getchar(); if(strcmp(str1,"endofinput")=0) bre
31、ak; if(strcmp(str1,"start")!=0) continue; gets(mima); int len=strlen(mima); for(int i=0;i<len;i+) if(mimai>='f'&&mimai<='z') mingweni=mimai-5; else if(mimai>='a'&&mimai<='e') mingweni=mimai+21; else mingweni=mimai; scanf("
32、%s",str2); getchar(); printf("%sn",mingwen); 306:all in all問題描述:給定兩個(gè)字符串s和t,判斷s是否是t的子序列。即從t中刪除一些字符,將剩余的字符連接起來,即可獲得s。輸入:輸入文件包括多組測試數(shù)據(jù),每組測試數(shù)據(jù)占一行,包括兩個(gè)由ascii碼組成的字符串s和t,它們的長度都不超過100000。輸出:對(duì)于每個(gè)測試數(shù)據(jù)輸出一行,如果s是t的子序列,則輸出“yes”,否則輸出“no”。樣例輸入:sequence subsequenceperson compressionverdi vivavittorioem
33、anuelerediitaliacasedoesmatter casedoesmatter樣例輸出:yesnoyesno代碼#include<stdio.h>#include<stdlib.h>#include<string.h> int main() int i,j;int len1,len2; char str1100010; char str2100010; while(scanf("%s %s",str1,str2)!=eof) int k=-1;int b=0; len1=strlen(str1); len2=strlen(st
34、r2); for(int i=0;i<len1;i+) for(int j=k+1;j<len2;j+) if(str1i=str2j) k=j; b+; break; if(b=len1) printf("yesn"); else printf("non"); 307:wertyu問題描述:一種常見的打字鍵入錯(cuò)誤是將鍵盤上的鍵位錯(cuò)按成它右側(cè)相鄰的按鍵,如圖3.1所示圖3.1 鍵盤比如,想鍵入“q”卻誤按成“w”,想鍵入“j”卻被誤按成“k”,要求編程對(duì)上述錯(cuò)誤的打字方式進(jìn)行更正。輸入:輸入文件包含若干行,每行可以包含數(shù)字、空格和除“a”、“
35、z”、“q”外的大寫字母,還有除單引號(hào)“”外的標(biāo)點(diǎn)符號(hào)。并且也不會(huì)錯(cuò)按到tab、backspace、control等標(biāo)記了單詞的按鍵。輸出:將每個(gè)字母或標(biāo)點(diǎn)符號(hào)用它左邊的符號(hào)替換,輸入中的空格按原樣輸出(即空格不會(huì)鍵入錯(cuò)誤)。樣例輸入:o s,gomr ypfsu/234567890-=wertyyuiop樣例輸出:i am fine today.1234567890-qwertyuiop代碼#include<stdlib.h>#include<stdio.h>#include<string.h>char str100;char key410='1&
36、#39;,'2','3','4','5','6','7','8','9','0','q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h&
37、#39;,'j','k','l','','z','x','c','v','b','n','m',',','.','/'int main() while(gets(str) char str1100="" int i; int len=strlen(str); for(i=0;i<len;i+) if(stri='-')str1i=&
38、#39;0' if(stri='=')str1i='-' if(stri='')str1i='p' if(stri='')str1i='' if(stri='')str1i='' if(stri=''')str1i='' if(stri=' ')str1i=' ' if(stri='1')str1i='' else for(int j=0;j<4;j+
39、) for(int k=1;k<10;k+) if(stri=keyjk) str1i=keyjk-1; for(i=0;i<len;i+) printf("%c",str1i); printf("n"); 501:約瑟夫問題描述約瑟夫問題:有只猴子,按順時(shí)針方向圍成一圈選大王(編號(hào)從到),從第號(hào)開始報(bào)數(shù),一直數(shù)到,數(shù)到的猴子退出圈外,剩下的猴子再接著從1開始報(bào)數(shù)。就這樣,直到圈內(nèi)只剩下一只猴子時(shí),這個(gè)猴子就是猴王,編程求輸入,后,輸出最后猴王的編號(hào)。輸入每行是用空格分開的兩個(gè)整數(shù),第一個(gè)是 n, 第二個(gè)是 m ( 0 < m,n &l
40、t;=300)。最后一行是:0 0輸出對(duì)于每行輸入數(shù)據(jù)(最后一行除外),輸出數(shù)據(jù)也是一行,即最后猴王的編號(hào)樣例輸入6 212 48 30 0樣例輸出517代碼#include<stdio.h>int main()int a301;int i,n,m,count,j;while(scanf("%d %d",&n,&m)&&n!=0&&m!=0)for(i=0;i<n;i+)ai=i+1; j=0;for(i=0;i<n;i+)count=0;while(count<m)while(aj=0)j=(j
41、+1)%n;count+;j=(j+1)%n;j-;if(j<0)j=n-1;if(i=n-1)printf("%dn",aj);aj=0;return 0;getchar();502:摘花生魯賓遜先生有一只寵物猴,名叫多多。這天,他們兩個(gè)正沿著鄉(xiāng)間小路散步,突然發(fā)現(xiàn)路邊的告示牌上貼著一張小小的紙條:“歡迎免費(fèi)品嘗我種的花生!熊字”。魯賓遜先生和多多都很開心,因?yàn)榛ㄉ撬麄兊淖類?。在告示牌背后,路邊真的有一塊花生田,花生植株整齊地排列成矩形網(wǎng)格(如圖1)。有經(jīng)驗(yàn)的多多一眼就能看出,每棵花生植株下的花生有多少。為了訓(xùn)練多多的算術(shù),魯賓遜先生說:“你先找出花生最多的植株
42、,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此類推,不過你一定要在我限定的時(shí)間內(nèi)回到路邊。”我們假定多多在每個(gè)單位時(shí)間內(nèi),可以做下列四件事情中的一件:1) 從路邊跳到最靠近路邊(即第一行)的某棵花生植株;2) 從一棵植株跳到前后左右與之相鄰的另一棵植株;3) 采摘一棵植株下的花生;4) 從最靠近路邊(即第一行)的某棵花生植株跳回路邊。現(xiàn)在給定一塊花生田的大小和花生的分布,請問在限定時(shí)間內(nèi),多多最多可以采到多少個(gè)花生?注意可能只有部分植株下面長有花生,假設(shè)這些植株下的花生個(gè)數(shù)各不相同。例如在圖2所示的花生田里,只有位于(2, 5), (3, 7), (4, 2), (5
43、, 4)的植株下長有花生,個(gè)數(shù)分別為13, 7, 15, 9。沿著圖示的路線,多多在21個(gè)單位時(shí)間內(nèi),最多可以采到37個(gè)花生。輸入輸入的第一行包括一個(gè)整數(shù)t,表示數(shù)據(jù)組數(shù)每組輸入的第一行包括三個(gè)整數(shù),m, n和k,用空格隔開;表示花生田的大小為m * n(1 <= m, n <= 50),多多采花生的限定時(shí)間為k(0 <= k <= 1000)個(gè)單位時(shí)間。接下來的m行,每行包括n個(gè)非負(fù)整數(shù),也用空格隔開;第i + 1行的第j個(gè)整數(shù)pij(0 <= pij <= 500)表示花生田里植株(i, j)下花生的數(shù)目,0表示該植株下沒有花生。輸出輸出包括t行,每一行
44、只包含一個(gè)整數(shù),即在限定時(shí)間內(nèi),多多最多可以采到花生的個(gè)數(shù)。樣例輸入6 7 210 0 0 0 0 0 00 0 0 0 13 0 00 0 0 0 0 0 70 15 0 0 0 0 00 0 0 9 0 0 00 0 0 0 0 0 0樣例輸出37代碼#include<stdio.h>#include<math.h>int main()int hf5555;int n,n,k,m,k,max,total,time=0;int i,j,maxi,maxj,nowi,nowj;scanf("%d",&n); for( k=0;k<n;k
45、+) total=0;time=0;scanf("%d %d %d",&n,&m,&k);for(i=1;i<=n;i+)for(j=1;j<=m;j+)scanf("%d",&hfij); nowi=0;nowj=0;while(time<k) max=0; for(i=1;i<=n;i+) for(j=1;j<=m;j+) if(hfij>max) max=hfij; maxi=i;maxj=j; if(max=0) break; if(nowi=0) nowj=maxj; if(t
46、ime+1+maxi+fabs(nowi-maxi)+fabs(maxj-nowj)<=k) time+=fabs(nowi-maxi)+fabs(maxj-nowj)+1; nowi=maxi; nowj=maxj; total+=hfmaximaxj; hfmaximaxj=0; else break;printf("%dn",total);return 0;503:the drunk jailer問題描述:某個(gè)監(jiān)獄有一排、共n間牢房,一間挨一間。每間牢房關(guān)著一名囚犯,每間牢房的門剛開始時(shí)都是關(guān)著的。有一天晚上,獄卒厭煩了看守工作,決定玩一個(gè)游戲。游戲的第1輪,他
47、喝了一杯酒,然后沿著監(jiān)獄,把所有的牢房的門挨個(gè)挨個(gè)打開;第2輪,他又喝了一杯酒,然后沿著監(jiān)獄,把編號(hào)為偶數(shù)的牢房的門關(guān)上;第3輪,他又喝了一杯酒,然后沿著監(jiān)獄,對(duì)編號(hào)為3的倍數(shù)的牢房,如果牢房的門開著,則關(guān)上,否則打開;,獄卒重復(fù)游戲n輪。游戲結(jié)束后,他喝下最后一杯酒,醉倒了。這時(shí),囚犯才意識(shí)到他們牢房的門可能是開著的,而且獄卒醉倒了,所以他們越獄了。給定牢房的數(shù)目,求越獄囚犯的人數(shù)。輸入:輸入文件的第1行為一個(gè)正整數(shù),表示測試數(shù)據(jù)的個(gè)數(shù)。每個(gè)測試數(shù)據(jù)占一行,為一個(gè)整數(shù)n,5<=n<=100,表示牢房的數(shù)目。輸出:對(duì)每個(gè)測試數(shù)據(jù)所表示的牢房數(shù)目n,輸出越獄的囚犯人數(shù)。樣例輸入:25
48、100樣例輸出:210代碼#include<stdio.h>#include<stdlib.h>int a200;int main() int n; scanf("%d",&n); while(n-) int m; int i; int count=0; int j,k; /int a200=0; scanf("%d",&m); for(i=1;i<=m;i+) ai=0;/表示監(jiān)獄中的每個(gè)房間是關(guān)著的 for(i=1;i<=m;i+)/進(jìn)行m次游戲 for(j=i;j<=m;j+=i) if(a
49、j=0) aj=1; else aj=0; for(i=1;i<=m;i+) if(ai=1) count+; printf("%dn",count); return 0;504:排列題目描述:大家知道,給出正整數(shù)n,則1到n這n個(gè)數(shù)可以構(gòu)成n!種排列,把這些排列按照從小到大的順序(字典順序)列出,如n=3時(shí),列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六個(gè)排列。任務(wù)描述:給出某個(gè)排列,求出這個(gè)排列的下k個(gè)排列,如果遇到最后一個(gè)排列,則下1排列為第1個(gè)排列,即排列1 2 3n。比如:n = 3,k=2 給出排列2 3 1,則它的下1個(gè)排列
50、為3 1 2,下2個(gè)排列為3 2 1,因此答案為3 2 1。輸入第一行是一個(gè)正整數(shù)m,表示測試數(shù)據(jù)的個(gè)數(shù),下面是m組測試數(shù)據(jù),每組測試數(shù)據(jù)第一行是2個(gè)正整數(shù)n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n個(gè)正整數(shù),是1,2 n的一個(gè)排列。輸出對(duì)于每組輸入數(shù)據(jù),輸出一行,n個(gè)數(shù),中間用空格隔開,表示輸入排列的下k個(gè)排列。樣例輸入33 12 3 13 13 2 110 21 2 3 4 5 6 7 8 9 10樣例輸出3 1 21 2 31 2 3 4 5 6 7 9 8 10代碼#include <stdio.h>#include &l
51、t;algorithm>using namespace std;int k,t,i,j,p,n,a1100;int main() scanf("%d",&t); for(i=0;i<t;i+) scanf("%d %d",&n,&k); for(j=0;j<n;j+) scanf("%d",&aj); for(j=0;j<k;j+) if(next_permutation(a,a+n)=0) for(p=0;p<n;p+) ap=p+1; for(j=0;j<n;j+
52、) printf("%d ",aj); printf("n"); return 0;505:candy sharing game問題描述:n個(gè)學(xué)生圍成一圈坐著,面向老師(老師位于中心)。每個(gè)學(xué)生手頭上剛開始都有偶數(shù)塊糖果。每輪游戲:老師一吹哨子,每個(gè)學(xué)生將他的糖果的一半分給他右邊相鄰的學(xué)生;n個(gè)學(xué)生分糖果完畢后,如果某個(gè)學(xué)生手頭上的糖果數(shù)為奇數(shù),則由老師再給一塊糖果湊成偶數(shù)塊。當(dāng)所有學(xué)生的糖果數(shù)一樣時(shí),則游戲結(jié)束。要求編寫程序,輸出游戲進(jìn)行的輪數(shù),以及最終每個(gè)學(xué)生手頭糖果的塊數(shù)。輸入:輸入文件描述了多次游戲(即輸入文件中包含多個(gè)測試數(shù)據(jù))。每次游戲的數(shù)據(jù)
53、第一行是一個(gè)整數(shù)n,表示學(xué)生的人數(shù),接下來是n個(gè)偶數(shù),代表初始時(shí)n個(gè)學(xué)生手上的糖果數(shù)目(逆時(shí)針排列)。輸入文件最后一行為0,表示輸入結(jié)束。輸出:對(duì)每次游戲,輸出游戲進(jìn)行的輪數(shù),以及游戲結(jié)束后每個(gè)學(xué)生手上的糖果數(shù)。樣例輸入:(每個(gè)數(shù)字輸入后敲一下enter鍵,換行)6、36、2、2、2、2、2、11、22、20、18、16、14、12、10、8、6、4、2、4、2、4、6、8、0樣例輸出:15 1417 224 8代碼#include<stdio.h>#include<string.h>int main()int game(int a,int m);int a10000,
54、b10000;int i,n,t=1;while(scanf("%d",&n)&&n!=0) int j=0;t=0;for(i=0;i<n;i+)scanf("%d",&ai);while(t=0)for(i=0;i<n;i+)bi=ai;for(i=0;i<n;i+)ai+1=bi/2+ai+1/2;a0=b0/2+bn-1/2;t=game(a,n);if(t=1)break;elsefor(i=0;i<n;i+)if(ai%2!=0)ai=ai+1;j+;for(i=0;i<n;i+)
55、if(ai%2!=0)ai=ai+1;if(j=0)printf("%d %dn",j+1,a0);elseprintf("%d %dn",j,a0);getchar();return 0;int game(int a,int m)int i,t;for(i=0;i<m;i+)if(a0!=ai)t=0;break;elset=1;return (t);506:數(shù)根描述數(shù)根可以通過把一個(gè)數(shù)的各個(gè)位上的數(shù)字加起來得到。如果得到的數(shù)是一位數(shù),那么這個(gè)數(shù)就是數(shù)根。如果結(jié)果是兩位數(shù)或者包括更多位的數(shù)字,那么再把這些數(shù)字加起來。如此進(jìn)行下去,直到得到是一位數(shù)
56、為止。比如,對(duì)于24來說,把2和4相加得到6,由于6是一位數(shù),因此6是24的數(shù)根。再比如39,把3和9加起來得到12,由于12不是一位數(shù),因此還得把1和2加起來,最后得到3,這是一個(gè)一位數(shù),因此3是39的數(shù)根。輸入輸入包括一些正整數(shù)(小于101000),每個(gè)一行。輸入的最后一行是0,表示輸入的結(jié)束,這一行不用處理。輸出對(duì)每個(gè)正整數(shù),輸出它的數(shù)根。每個(gè)結(jié)果占據(jù)一行。樣例輸入24390樣例輸出63代碼#include<stdlib.h>#include<string.h>#include<stdio.h>char str2000;int main() while(ge
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級(jí)上冊數(shù)學(xué)教案-分?jǐn)?shù)的再認(rèn)識(shí) 北師大版
- 六年級(jí)下冊數(shù)學(xué)教案 用不同的知識(shí)解答應(yīng)用題 西師大版
- 二年級(jí)下冊數(shù)學(xué)教案-5.2 被減數(shù)中間有0的連續(xù)退位減法| 青島版(五四學(xué)制)
- 口腔門診勞動(dòng)合同(2025年版)
- 一年級(jí)下冊數(shù)學(xué)教案-動(dòng)手做(一)2 北師大版
- 六年級(jí)下冊數(shù)學(xué)教案-總復(fù)習(xí)-四則運(yùn)算的意義和法則|北師大版
- 三年級(jí)上冊數(shù)學(xué)教案-用兩步連乘解決實(shí)際問題∣蘇教版
- 2024年張緊裝置項(xiàng)目資金申請報(bào)告代可行性研究報(bào)告
- 2025年華北理工大學(xué)輕工學(xué)院單招職業(yè)傾向性測試題庫帶答案
- 數(shù)學(xué)-廣州市白云區(qū)2025年高三下學(xué)期期初綜合訓(xùn)練試題+答案
- 部編版小學(xué)五年級(jí)語文教材培訓(xùn)課件【部編】
- 盆景造型經(jīng)驗(yàn)
- 2023年廣東省佛山市順德區(qū)小升初數(shù)學(xué)試卷(含答案)
- ICU護(hù)理查房記錄【范本模板】
- 威風(fēng)堂堂進(jìn)行曲
- 銅及銅合金物理冶金基礎(chǔ)-黃銅
- 煤礦信息化管理制度
- 金融科技學(xué)-完整全套課件
- 物理學(xué)史中國古代物理學(xué)
- 導(dǎo)管滑脫應(yīng)急預(yù)案演練住院患者導(dǎo)尿管道滑脫
- (完整)小學(xué)語文考試專用作文方格紙
評(píng)論
0/150
提交評(píng)論