版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、101:雞兔同籠描述一個籠子里面關(guān)了雞和兔子(雞有2只腳,兔子有4只腳,沒有例外)。已經(jīng)知道了籠子里面腳的總數(shù)a,問籠子里面至少有多少只動物,至多有多少只動物輸入第1行是測試數(shù)據(jù)的組數(shù)n,后面跟著n行輸入。每組測試數(shù)據(jù)占1行,每行一個正整數(shù)a (a < 32768)輸出輸出包含n行,每行對應(yīng)一個輸入,包含兩個正整數(shù),第一個是最少的動物數(shù),第二個是最多的動物數(shù),兩個正整數(shù)用一個空格分開如果沒有滿足要求的答案,則輸出兩個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ù)不限。寫一個程序,給定起始位置和目標(biāo)位置,計算王、后、車、象從起始位置走到目標(biāo)位置所需的最少步數(shù)。輸入第一行是測試數(shù)據(jù)的組數(shù)t(0 <= t <= 20)。以下每行是一組測試數(shù)據(jù),每組包括棋盤上的兩個位置,第一個是起始位置,第二個是目標(biāo)位置。位置用"字母-數(shù)字"的形式表示,字母從"a"到"h",數(shù)字從"1"到
4、"8"。輸出對輸入的每組測試數(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米。我們可以把馬路看成一個數(shù)軸,馬路的一端在數(shù)軸0的位置,另一端在l的位置;數(shù)軸上的每個整數(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ù)是計算將這些樹都移走后,馬路上還有多少棵樹。輸入輸入的第一行有兩個整數(shù)l(1 <= l <= 10000)和 m(1 <= m <= 100),l代表馬路的長度,m代表區(qū)域的數(shù)目,l和m之間用一個空格隔開。接下來的m行每行包含兩個不同的整數(shù),用一個空格隔開,表示一個區(qū)域的起始點(diǎn)和終止點(diǎn)的坐標(biāo)。輸出輸出包括一行,這一行只包含一個整數(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個同樣的蘋果放在n個同樣的盤子里,允許有的盤子空著不放,問共有多少種不同的分法?(用k表示)5,1,1和1,5,1 是同一種分法。輸入第一行是測試數(shù)據(jù)的數(shù)目t(0 <= t <= 20)。以下每行均包含二個整數(shù)m和n,以空格分開。1<=m,n<=10。輸出對輸入的每組數(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、險的時候不小心走入了一個迷宮,迷宮可以看成是由n * n的格點(diǎn)組成,每個格點(diǎn)只有2種狀態(tài),.和#,前者表示可以通行后者表示不能通行。同時當(dāng)extense處在某個格點(diǎn)時,他只能移動到東南西北(或者說上下左右)四個方向之一的相鄰格點(diǎn)上,extense想要從點(diǎn)a走到點(diǎn)b,問在不走出迷宮的情況下能不能辦到。如果起點(diǎn)或者終點(diǎn)有一個不能通行(為#),則看成無法辦到。輸入第1行是測試數(shù)據(jù)的組數(shù)k,后面跟著k組輸入。每組測試數(shù)據(jù)的第1行是一個正整數(shù)n (1 <= n <= 100),表示迷宮的規(guī)模是n * n的。接下來是一個n * n的矩陣,矩陣中的元素為.或者#。再接下來一行是4個整數(shù)ha, l
12、a, hb, lb,描述a處在第ha行, 第la列,b處在第hb行, 第lb列。注意到ha, la, hb, lb全部是從0開始計數(shù)的。輸出k行,每行輸出對應(yīng)一個輸入。能辦到則輸出“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)計字符數(shù)描述判斷一個由a-z這26個字符組成的字符串中哪個字符出現(xiàn)的次數(shù)最多輸入第1行是測試數(shù)據(jù)的
15、組數(shù)n,每組測試數(shù)據(jù)占1行,是一個由a-z這26個字符組成的字符串每組測試數(shù)據(jù)之間有一個空行,每行數(shù)據(jù)不超過1000個字符且非空輸出n行,每行輸出對應(yīng)一個輸入。一行輸出包括出現(xiàn)次數(shù)最多的字符和該字符出現(xiàn)的次數(shù),中間是一個空格。如果有多個字符出現(xiàn)的次數(shù)相同且最多,那么輸出ascii碼最小的那一個字符樣例輸入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è)喜歡用容易被記住的電話號碼。讓電話號碼容易被記住的一個辦法是將它寫成一個容易記住的單詞或者短語。例如,你需要給滑鐵盧大學(xué)打電話時,可以撥打tut-glop。有時,只將電話號碼中部分?jǐn)?shù)字拼寫成單詞。當(dāng)你晚上回到酒店,可以通過撥打310-gino來向gino's訂一份pizza。讓電話號碼容易被記住的另一個辦法是以一種好記的方式對號碼的數(shù)字進(jìn)行分組。通過撥打必勝客的“三個十”號碼3-10-10-10,你可以從他們那里訂pizza。電話號碼的標(biāo)準(zhǔn)格式是七位十進(jìn)制數(shù),并在第三、第四位數(shù)
18、字之間有一個連接符。電話撥號盤提供了從字母到數(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ù)字,連字符不需要撥號,可以任意添加和刪除。 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。 如果兩個號碼有相同的標(biāo)準(zhǔn)格式,那么他們就是等同的(相同的撥號) 你的公司正在為本
19、地的公司編寫一個電話號碼薄。作為質(zhì)量控制的一部分,你想要檢查是否有兩個和多個公司擁有相同的電話號碼。輸入輸入的格式是,第一行是一個正整數(shù),指定電話號碼薄中號碼的數(shù)量(最多100000)。余下的每行是一個電話號碼。每個電話號碼由數(shù)字,大寫字母(除了q和z)以及連接符組成。每個電話號碼中只會剛好有7個數(shù)字或者字母。輸出對于每個出現(xiàn)重復(fù)的號碼產(chǎn)生一行輸出,輸出是號碼的標(biāo)準(zhǔn)格式緊跟一個空格然后是它的重復(fù)次數(shù)。如果存在多個重復(fù)的號碼,則按照號碼的字典升序輸出。如果輸入數(shù)據(jù)中沒有重復(fù)的號碼,輸出一行: 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、是找到一個最長的字符串x,使得對于已經(jīng)給出的字符串中的任意一個y,x或者是y的子串,或者x中的字符反序之后得到的新字符串是y的子串。輸入輸入的第一行是一個整數(shù)t (1 <= t <= 10),t表示測試數(shù)據(jù)的數(shù)目。對于每一組測試數(shù)據(jù),第一行是一個整數(shù)n (1 <= n <= 100),表示已經(jīng)給出n個字符串。接下來n行,每行給出一個長度在1和100之間的字符串。輸出對于每一組測試數(shù)據(jù),輸出一行,給出題目中要求的字符串x的長度。樣例輸入23abcdbcdffbrcd2roseorchid樣例輸出22代碼304:caesar 密碼描述julius caesar 生活在充滿危
25、險和陰謀的年代。為了生存,他首次發(fā)明了密碼,用于軍隊的消息傳遞。假設(shè)你是caesar 軍團(tuán)中的一名軍官,需要把caesar 發(fā)送的消息破譯出來、并提供給你的將軍。消息加密的辦法是:對消息原文中的每個字母,分別用該字母之后的第5個字母替換(例如:消息原文中的每個字母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個數(shù)據(jù)集組成。每
26、個數(shù)據(jù)集由3部分組成:起始行:start 密碼消息:由1到200個字符組成一行,表示caesar發(fā)出的一條消息結(jié)束行:end 在最后一個數(shù)據(jù)集之后,是另一行:endofinput輸出每個數(shù)據(jù)集對應(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問題描述:給定兩個字符串s和t,判斷s是否是t的子序列。即從t中刪除一些字符,將剩余的字符連接起來,即可獲得s。輸入:輸入文件包括多組測試數(shù)據(jù),每組測試數(shù)據(jù)占一行,包括兩個由ascii碼組成的字符串s和t,它們的長度都不超過100000。輸出:對于每個測試數(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問題描述:一種常見的打字鍵入錯誤是將鍵盤上的鍵位錯按成它右側(cè)相鄰的按鍵,如圖3.1所示圖3.1 鍵盤比如,想鍵入“q”卻誤按成“w”,想鍵入“j”卻被誤按成“k”,要求編程對上述錯誤的打字方式進(jìn)行更正。輸入:輸入文件包含若干行,每行可以包含數(shù)字、空格和除“a”、“
35、z”、“q”外的大寫字母,還有除單引號“”外的標(biāo)點(diǎn)符號。并且也不會錯按到tab、backspace、control等標(biāo)記了單詞的按鍵。輸出:將每個字母或標(biāo)點(diǎn)符號用它左邊的符號替換,輸入中的空格按原樣輸出(即空格不會鍵入錯誤)。樣例輸入: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ù),一直數(shù)到,數(shù)到的猴子退出圈外,剩下的猴子再接著從1開始報數(shù)。就這樣,直到圈內(nèi)只剩下一只猴子時,這個猴子就是猴王,編程求輸入,后,輸出最后猴王的編號。輸入每行是用空格分開的兩個整數(shù),第一個是 n, 第二個是 m ( 0 < m,n &l
40、t;=300)。最后一行是:0 0輸出對于每行輸入數(shù)據(jù)(最后一行除外),輸出數(shù)據(jù)也是一行,即最后猴王的編號樣例輸入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:摘花生魯賓遜先生有一只寵物猴,名叫多多。這天,他們兩個正沿著鄉(xiāng)間小路散步,突然發(fā)現(xiàn)路邊的告示牌上貼著一張小小的紙條:“歡迎免費(fèi)品嘗我種的花生!熊字”。魯賓遜先生和多多都很開心,因?yàn)榛ㄉ撬麄兊淖類?。在告示牌背后,路邊真的有一塊花生田,花生植株整齊地排列成矩形網(wǎng)格(如圖1)。有經(jīng)驗(yàn)的多多一眼就能看出,每棵花生植株下的花生有多少。為了訓(xùn)練多多的算術(shù),魯賓遜先生說:“你先找出花生最多的植株
42、,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此類推,不過你一定要在我限定的時間內(nèi)回到路邊?!蔽覀兗俣ǘ喽嘣诿總€單位時間內(nèi),可以做下列四件事情中的一件:1) 從路邊跳到最靠近路邊(即第一行)的某棵花生植株;2) 從一棵植株跳到前后左右與之相鄰的另一棵植株;3) 采摘一棵植株下的花生;4) 從最靠近路邊(即第一行)的某棵花生植株跳回路邊。現(xiàn)在給定一塊花生田的大小和花生的分布,請問在限定時間內(nèi),多多最多可以采到多少個花生?注意可能只有部分植株下面長有花生,假設(shè)這些植株下的花生個數(shù)各不相同。例如在圖2所示的花生田里,只有位于(2, 5), (3, 7), (4, 2), (5
43、, 4)的植株下長有花生,個數(shù)分別為13, 7, 15, 9。沿著圖示的路線,多多在21個單位時間內(nèi),最多可以采到37個花生。輸入輸入的第一行包括一個整數(shù)t,表示數(shù)據(jù)組數(shù)每組輸入的第一行包括三個整數(shù),m, n和k,用空格隔開;表示花生田的大小為m * n(1 <= m, n <= 50),多多采花生的限定時間為k(0 <= k <= 1000)個單位時間。接下來的m行,每行包括n個非負(fù)整數(shù),也用空格隔開;第i + 1行的第j個整數(shù)pij(0 <= pij <= 500)表示花生田里植株(i, j)下花生的數(shù)目,0表示該植株下沒有花生。輸出輸出包括t行,每一行
44、只包含一個整數(shù),即在限定時間內(nèi),多多最多可以采到花生的個數(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問題描述:某個監(jiān)獄有一排、共n間牢房,一間挨一間。每間牢房關(guān)著一名囚犯,每間牢房的門剛開始時都是關(guān)著的。有一天晚上,獄卒厭煩了看守工作,決定玩一個游戲。游戲的第1輪,他
47、喝了一杯酒,然后沿著監(jiān)獄,把所有的牢房的門挨個挨個打開;第2輪,他又喝了一杯酒,然后沿著監(jiān)獄,把編號為偶數(shù)的牢房的門關(guān)上;第3輪,他又喝了一杯酒,然后沿著監(jiān)獄,對編號為3的倍數(shù)的牢房,如果牢房的門開著,則關(guān)上,否則打開;,獄卒重復(fù)游戲n輪。游戲結(jié)束后,他喝下最后一杯酒,醉倒了。這時,囚犯才意識到他們牢房的門可能是開著的,而且獄卒醉倒了,所以他們越獄了。給定牢房的數(shù)目,求越獄囚犯的人數(shù)。輸入:輸入文件的第1行為一個正整數(shù),表示測試數(shù)據(jù)的個數(shù)。每個測試數(shù)據(jù)占一行,為一個整數(shù)n,5<=n<=100,表示牢房的數(shù)目。輸出:對每個測試數(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)獄中的每個房間是關(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個數(shù)可以構(gòu)成n!種排列,把這些排列按照從小到大的順序(字典順序)列出,如n=3時,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六個排列。任務(wù)描述:給出某個排列,求出這個排列的下k個排列,如果遇到最后一個排列,則下1排列為第1個排列,即排列1 2 3n。比如:n = 3,k=2 給出排列2 3 1,則它的下1個排列
50、為3 1 2,下2個排列為3 2 1,因此答案為3 2 1。輸入第一行是一個正整數(shù)m,表示測試數(shù)據(jù)的個數(shù),下面是m組測試數(shù)據(jù),每組測試數(shù)據(jù)第一行是2個正整數(shù)n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n個正整數(shù),是1,2 n的一個排列。輸出對于每組輸入數(shù)據(jù),輸出一行,n個數(shù),中間用空格隔開,表示輸入排列的下k個排列。樣例輸入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個學(xué)生圍成一圈坐著,面向老師(老師位于中心)。每個學(xué)生手頭上剛開始都有偶數(shù)塊糖果。每輪游戲:老師一吹哨子,每個學(xué)生將他的糖果的一半分給他右邊相鄰的學(xué)生;n個學(xué)生分糖果完畢后,如果某個學(xué)生手頭上的糖果數(shù)為奇數(shù),則由老師再給一塊糖果湊成偶數(shù)塊。當(dāng)所有學(xué)生的糖果數(shù)一樣時,則游戲結(jié)束。要求編寫程序,輸出游戲進(jìn)行的輪數(shù),以及最終每個學(xué)生手頭糖果的塊數(shù)。輸入:輸入文件描述了多次游戲(即輸入文件中包含多個測試數(shù)據(jù))。每次游戲的數(shù)據(jù)
53、第一行是一個整數(shù)n,表示學(xué)生的人數(shù),接下來是n個偶數(shù),代表初始時n個學(xué)生手上的糖果數(shù)目(逆時針排列)。輸入文件最后一行為0,表示輸入結(jié)束。輸出:對每次游戲,輸出游戲進(jìn)行的輪數(shù),以及游戲結(jié)束后每個學(xué)生手上的糖果數(shù)。樣例輸入:(每個數(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ù)根可以通過把一個數(shù)的各個位上的數(shù)字加起來得到。如果得到的數(shù)是一位數(shù),那么這個數(shù)就是數(shù)根。如果結(jié)果是兩位數(shù)或者包括更多位的數(shù)字,那么再把這些數(shù)字加起來。如此進(jìn)行下去,直到得到是一位數(shù)
56、為止。比如,對于24來說,把2和4相加得到6,由于6是一位數(shù),因此6是24的數(shù)根。再比如39,把3和9加起來得到12,由于12不是一位數(shù),因此還得把1和2加起來,最后得到3,這是一個一位數(shù),因此3是39的數(shù)根。輸入輸入包括一些正整數(shù)(小于101000),每個一行。輸入的最后一行是0,表示輸入的結(jié)束,這一行不用處理。輸出對每個正整數(shù),輸出它的數(shù)根。每個結(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態(tài)補(bǔ)償款禁養(yǎng)協(xié)議書(2篇)
- 環(huán)境監(jiān)測設(shè)備研發(fā)合同(2篇)
- 七年級數(shù)學(xué)下冊14.1用有序數(shù)對表示位置聽評課記錄
- 粵人版地理七年級下冊《第一節(jié) 美洲概述》聽課評課記錄5
- 湘教版數(shù)學(xué)九年級下冊1.2《二次函數(shù)的圖象與性質(zhì)》聽評課記錄1
- 華師大版歷史九年級上冊第1課《古代埃及》聽課評課記錄1
- 北師大版道德與法治九年級上冊9.1《培育社會主義核心價值觀》聽課評課記錄
- 部編人教版歷史九年級上冊第11課《古代日本》聽課評課記錄
- 八年級道德與法治下冊第一單元堅持憲法至上第二課保障憲法實(shí)施第2框加強(qiáng)憲法監(jiān)督聽課評課記錄(新人教版)
- 五年級上冊數(shù)學(xué)聽評課記錄《5.3 分餅》(1)-北師大版
- 物聯(lián)網(wǎng)協(xié)議與標(biāo)準(zhǔn)化
- 員工提前辭工管理制度
- 環(huán)衛(wèi)一體化運(yùn)營方案
- 《基于PPT課件的高中英語閱讀策略探究》
- DTⅡ型固定式帶式輸送機(jī)(托輥)
- 普通話測試培訓(xùn)課件2:讀單音節(jié)字詞
- 電梯維保競爭性磋商文件
- 科技進(jìn)步類現(xiàn)代軌道交通綜合體設(shè)計理論與關(guān)鍵技術(shù)公
- 不同課型的課堂教學(xué)基本范式
- 損失物品清單
- 熱控專業(yè)工程質(zhì)量驗(yàn)收及評定范圍劃分表
評論
0/150
提交評論