版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ACM程序設(shè)計(jì)與競(jìng)賽作業(yè)采藥金字塔問題毛毛蟲問題HammingProblem字符串正反連接去掉空格成績(jī)轉(zhuǎn)換金塊問題工資問題10.“水仙花數(shù)”問題11.大小寫轉(zhuǎn)換12.取數(shù)游戲13.整除問題14.警察抓小偷15.n!16.漢諾塔問題17.猴子吃桃問題(遞歸)18.A+BforInput-OutputPractice(I)19.A+BforInput-OutputPractice(II)20.A+BforInput-OutputPractice(III)21.A+BforInput-OutputPractice(IV)22.埃及分?jǐn)?shù)23.完數(shù)24.FibbonacciNumber_Hdu207025.Pakets26.不要62_Hdu20891問題B:采藥時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
87
解決:
72
[提交][狀態(tài)][討論版]題目描述辰辰是個(gè)很有潛能、天資聰穎的孩子,他的夢(mèng)想是成為世界上最偉大的醫(yī)師。為此,他想拜附近最有威望的醫(yī)師為師。醫(yī)師為了判斷他的資質(zhì),給他出了一個(gè)難題。醫(yī)師把他帶到個(gè)到處都是草藥的山洞里對(duì)他說:“孩子,這個(gè)山洞里有一些不同的草藥,采每一株都需要一些時(shí)間,每一株也有它自身的價(jià)值。我會(huì)給你一段時(shí)間,在這段時(shí)間里,你可以采到一些草藥。如果你是一個(gè)聰明的孩子,你應(yīng)該可以讓采到的草藥的總價(jià)值最大?!?/p>
如果你是辰辰,你能完成這個(gè)任務(wù)嗎?輸入輸入的第一行有兩個(gè)整數(shù)T(1≤T≤1000)和M(1≤M≤100),T代表總共能夠用來采藥的時(shí)間,M代表山洞里的草藥的數(shù)目。接下來的M行每行包括兩個(gè)在1到100之間(包括1和100)的整數(shù),分別表示采摘某株草藥的時(shí)間和這株草藥的價(jià)值。輸出輸出只包括一行,這一行只包含一個(gè)整數(shù),表示在規(guī)定的時(shí)間內(nèi),可以采到的草藥的最大總價(jià)值。樣例輸入7037110069112樣例輸出3#include"stdio.h"voidmain(){inta[102][1002]={0};intt,t1,m1,m,i,i1,k=1;scanf("%d%d",&t,&m);scanf("%d%d",&t1,&m1);for(i1=1;i1<=t;i1++)//處理第一行{if(i1>=t1)a[k][i1]=m1;}k++;for(i=2;i<=m;i++){scanf("%d%d",&t1,&m1);for(i1=1;i1<=t;i1++){if(i1<t1)//不可能采的情況;a[k][i1]=a[k-1][i1];else//可以采的情況{if(a[k-1][i1]>m1+a[k-1][i1-t1])a[k][i1]=a[k-1][i1];//采完總價(jià)值下降elsea[k][i1]=m1+a[k-1][i1-t1];//值得采的情況;}}k++;}printf("%d",a[m][t]);}心得:這是一個(gè)動(dòng)態(tài)規(guī)劃的題目,首先定義一個(gè)二維數(shù)組,根據(jù)草藥的性價(jià)比,優(yōu)先采取較高的草藥,如果時(shí)間不夠,則降低性價(jià)比繼續(xù)采取草藥,直至?xí)r間結(jié)束,根據(jù)采集的草藥計(jì)算它的最大值,這題通過比較算出可能采的情況,和不能采的情況,如果能采,那再判斷值不值得采,得出最優(yōu)解。2問題A:金字塔問題時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
54
解決:
32
[提交][狀態(tài)][討論版]題目描述給一個(gè)金字塔,如上圖所示,請(qǐng)你求出一個(gè)從塔頂?shù)剿椎穆窂?,要求路徑?jīng)過的點(diǎn)的數(shù)字和最小。例如上圖所示的金字塔的最小路徑為:40輸入輸入第一行是一個(gè)整數(shù)n<1000;接下來是n行,第一行一個(gè)數(shù);第二行兩個(gè)數(shù);。。。第n行n個(gè)數(shù);數(shù)之間用空格分開。數(shù)的鏈接方式如圖所示。輸出一個(gè)數(shù),就是從塔頂?shù)剿椎穆窂降淖钚【嚯x。樣例輸入59121510683189519710416樣例輸出40#include<stdio.h>voidmain(){inti,j,n;inta[100][100];定義一個(gè)二維數(shù)組;scanf("%d",&n);for(i=1;i<=n;i++)for(j=1;j<=i;j++){scanf("%d",&a[i][j]);}for(i=n-1;i>=1;i--)for(j=1;j<=i;j++)//從最后一行開始處理;{if(a[i+1][j]>a[i+1][j+1])a[i][j]=a[i][j]+a[i+1][j+1];elsea[i][j]=a[i][j]+a[i+1][j];//求得每次路徑最小值;}printf("%d",a[1][1]);}心得:這個(gè)題目主要運(yùn)用了動(dòng)態(tài)規(guī)劃的思想,定義一個(gè)二維數(shù)組,把所輸入的數(shù)據(jù)存入進(jìn)去,然后從它的第一行處理,比較相鄰位置數(shù)的大小,取最小的路徑和上一行對(duì)應(yīng)的數(shù)相加,取得最小路徑,進(jìn)行循環(huán),直到求出數(shù)組中a[1][1],即所求的結(jié)果。3問題B:毛毛蟲問題時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
32
解決:
16
[提交][狀態(tài)][討論版]題目描述Mary在她家門口水平種了一排蘋果樹,共有N棵。
突然Mary發(fā)現(xiàn)在左起第P棵樹上(從1開始計(jì)數(shù))有一條毛毛蟲。為了看到毛毛蟲變蝴蝶的過程,Lele在蘋果樹旁觀察了很久。雖然沒有看到蝴蝶,但Lele發(fā)現(xiàn)了一個(gè)規(guī)律:每過1分鐘,毛毛蟲會(huì)隨機(jī)從一棵樹爬到相鄰的一棵樹上。
比如剛開始毛毛蟲在第2棵樹上,過1分鐘后,毛毛蟲可能會(huì)在第1棵樹上或者第3棵樹上。如果剛開始時(shí)毛毛蟲在第1棵樹上,過1分鐘以后,毛毛蟲一定會(huì)在第2棵樹上。
現(xiàn)在告訴你蘋果樹的數(shù)目N,以及毛毛剛開始所在的位置P,請(qǐng)問,在M分鐘后,毛毛蟲到達(dá)第T棵樹,一共有多少種行走方案數(shù)。輸入輸入四個(gè)整數(shù)NPMT。輸出輸出一個(gè)整數(shù),就是行走的方案數(shù)。樣例輸入7444樣例輸出6#include<stdio.h>voidmain(){inti,j;intp,m,n,t;inta[100][100]={0};//定義一個(gè)二維數(shù)組;scanf("%d%d%d%d",&n,&p,&m,&t);a[0][p]=1;毛毛蟲剛開始在數(shù)組中的位置;for(i=1;i<=m;i++){for(j=1;j<=n;j++){a[i][j]=a[i-1][j-1]+a[i-1][j+1];//每一步的方案數(shù);}}printf("%d\n",a[m][t]);M分鐘后到T棵樹行走的方案數(shù);}心得:這一題運(yùn)用了動(dòng)態(tài)規(guī)劃的思想,毛毛蟲的每一步都會(huì)影響下一步的結(jié)果,所以首先按照普通情況找出規(guī)律及其其公式,進(jìn)而算出方案數(shù)。首先定義一個(gè)二維數(shù)組,初始化毛毛蟲的起始位置,然后通過兩個(gè)循環(huán),求出毛毛蟲走每一步的方案數(shù),存在二維數(shù)組中,然后求出第M分鐘到T棵樹行走的方案數(shù)。4問題A:HammingProblem時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
61
解決:
23
[提交][狀態(tài)][討論版]題目描述Foreachthreeprimenumbersp1,p2andp3,let'sdefineHammingsequenceHi(p1,p2,p3),i=1,...ascontaininginincreasingorderallthenaturalnumberswhoseonlyprimedivisorsarep1,p2orp3.
Forexample,H(2,3,5)=2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,...
SoH5(2,3,5)=6.輸入Inthesinglelineofinputfiletherearespace-separatedintegersp1p2p3i.輸出Theoutputfilemustcontainthesingleinteger-Hi(p1,p2,p3).Allnumbersininputandoutputarelessthan10^18.樣例輸入2355樣例輸出6#include"stdio.h"intminx(intp1,intp2,intp3)//定義有參函數(shù)minx;{intmin=p1;if(p2<min)min=p2;if(p3<min)min=p3;returnmin;}//求p1,p2,p3的最小值;intmain(){intp1,p2,p3,t,i;inta,b,c;charnum[10000];scanf("%d%d%d%d",&p1,&p2,&p3,&t);a=b=c=0;num[0]=1;for(i=1;i<=t;i++){num[i]=minx(p1*num[a],p2*num[b],p3*num[c]);//調(diào)用minx函數(shù);if(num[i]==p1*num[a])a++;if(num[i]==p2*num[b])b++;if(num[i]==p3*num[c])c++;}求所有的能被p1,p2,p3整除的數(shù);printf("%d\n",num[t]);return0;}心得:運(yùn)用動(dòng)態(tài)規(guī)劃的思想,定義一個(gè)一維數(shù)組,把所有符合條件的數(shù)按順序存進(jìn)一維數(shù)組中,這個(gè)編程運(yùn)用了函數(shù)調(diào)用的方法求三個(gè)數(shù)的最小值,然后把這個(gè)最小值存進(jìn)一維數(shù)組中,每次存進(jìn)一個(gè)數(shù),下次都會(huì)用存進(jìn)去的這個(gè)數(shù)求解下一個(gè)數(shù),進(jìn)行循環(huán)。5問題B:字符串正反連接時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
68
解決:
42
[提交][狀態(tài)][討論版]題目描述所給字符串正序和反序連接,形成新串并輸出輸入任意字符串(長(zhǎng)度<=50)輸出字符串正序和反序連接所成的新字符串樣例輸入123abc樣例輸出123abccba321#include<stdio.h>#include<string.h>voidmain(){chara[50];//定義一個(gè)字符串;inti,f;while(scanf("%s",&a)!=EOF)//實(shí)現(xiàn)多行實(shí)例輸入;{f=strlen(a);//把字符串的長(zhǎng)度值賦給f;for(i=0;i<f;i++){printf("%c",a[i]);//把字符串正序輸出;}for(i=f-1;i>=0;i--){printf("%c",a[i]);//把字符串反序輸出;}printf("\n");}}心得:定義一個(gè)字符串,運(yùn)用strlen()函數(shù)獲取字符串的長(zhǎng)度值f,首先用for循環(huán),把這個(gè)字符串正序輸出,然后再用for循環(huán)對(duì)這個(gè)字符串進(jìn)行反序輸出,這里主要考察了輸入輸出。6問題C:去掉空格時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
27
解決:
4
[提交][狀態(tài)][討論版]題目描述讀入一些字符串,將其中的空格去掉。輸入輸入為多行,每行為一個(gè)字符串,字符串只由字母、數(shù)字和空格組成,長(zhǎng)度不超過80。輸入以“Endoffile”結(jié)束。輸出對(duì)于每行輸入,輸出轉(zhuǎn)換后的字符串。樣例輸入HelloWorld123Nicetomeetyouabc樣例輸出HelloWorld123Nicetomeetyouabc提示用scanf是不能讀入一行有空格的字符串的,用gets吧。用“gets(str)!=NULL”可以判斷輸入是否結(jié)束,如果此條件為假(即gets(str)==NULL),則表示輸入結(jié)束(對(duì)于本題)。#include<stdio.h>#include<string.h>voidmain(){ inti,f; chara[90];//定義一個(gè)字符串; while(gets(a)!=NULL) { f=strlen(a);//把字符串的長(zhǎng)度值賦給f; for(i=0;i<f;i++) { if(a[i]=='') { printf("%c",a[i+1]);//去掉空格; i=i+1; } else printf("%c",a[i]);//沒有空格,直接輸出; } printf("\n"); }}心得:這里也是主要考察輸入輸出問題,首先也是定義了一個(gè)字符串,用strlen()函數(shù)獲得字符串的長(zhǎng)度f,進(jìn)行f次循環(huán),判斷這個(gè)字符串是否有空格?如果有把數(shù)組中的每個(gè)數(shù)往后進(jìn)一位,即去點(diǎn)空格,如果沒有直接輸出。7問題D:成績(jī)轉(zhuǎn)換時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
78
解決:
30
[提交][狀態(tài)][討論版]題目描述輸入一個(gè)百分制的成績(jī)t,將其轉(zhuǎn)換成對(duì)應(yīng)的等級(jí),具體轉(zhuǎn)換規(guī)則如下:
90~100為A;
80~89為B;
70~79為C;
60~69為D;
0~59為E;
輸入輸入數(shù)據(jù)有多組,每組占一行,由一個(gè)整數(shù)組成。輸出對(duì)于每組輸入數(shù)據(jù),輸出一行。如果輸入數(shù)據(jù)不在0~100范圍內(nèi),請(qǐng)輸出一行:“Scoreiserror!”。樣例輸入5667100123樣例輸出EDAScoreiserror!提示#include<stdio.h>intmain(){ intx; while(scanf("%d",&x)!=EOF)//實(shí)現(xiàn)多行實(shí)例輸入; { if(x<60) printf("E\n"); elseif(x<70) printf("D\n"); elseif(x<80) printf("C\n"); elseif(x<90) printf("B\n"); elseif(x<=100) printf("A\n"); else printf("Scoreiserror!\n"); }//分?jǐn)?shù)轉(zhuǎn)換為等級(jí); return0;}心得:這里主要運(yùn)用了選擇語句,用while(scanf("%d",&x)!=EOF)語句實(shí)現(xiàn)多行實(shí)例輸入,然后把所輸入的分?jǐn)?shù)通過if語句進(jìn)行判斷,轉(zhuǎn)換成相應(yīng)的等級(jí),輸出。8問題A:金塊問題時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
92
解決:
71
[提交][狀態(tài)][討論版]題目描述老板有一袋金塊(共n塊,n是2的冪(n>=2)),最優(yōu)秀的雇員得到其中最重的一塊,最差的雇員得到其中最輕的一塊。假設(shè)有一臺(tái)比較重量的儀器,希望用最少的比較次數(shù)找出最重和最輕的金塊。輸入輸入共兩行,第一行輸入金塊的數(shù)量N<100000;第二行N金塊的重量,用空格間隔。輸出兩個(gè)數(shù)用空格分開,最重金塊最輕金塊樣例輸入537964樣例輸出93#include<stdio.h>intmain(){intn,a[100000];intmax,min,i;while(scanf("%d",&n)!=EOF)//實(shí)現(xiàn)多行實(shí)例輸入;{ for(i=0;i<n;i++) scanf("%d",&a[i]); max=min=a[0];//把數(shù)組a[0]的值賦給max和min; for(i=1;i<n;i++) { if(a[i]>max) max=a[i]; }//求最最重的金塊; for(i=1;i<n;i++) { if(a[i]<min) min=a[i]; }//求最輕的金塊; printf("%d%d\n",max,min);}return0;}心得:這題主要運(yùn)用分治算法的思想,把一個(gè)大問題分成一個(gè)個(gè)小的子問題去求解,這個(gè)題目是典型的二分法問題,把這個(gè)題分成兩個(gè)小問題,即求最重的和求最輕的金塊,首先定義了一個(gè)一維數(shù)組,把所有金塊的質(zhì)量存入其中,把數(shù)組的初始值賦給最重的和最輕的金塊,然后運(yùn)用循環(huán)對(duì)數(shù)組中每個(gè)金塊的質(zhì)量與金塊的初始值進(jìn)行比較,求的最重和最輕的金塊,然后輸出。9問題B:工資問題時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
121
解決:
74
[提交][狀態(tài)][討論版]題目描述某單位給每個(gè)職工發(fā)工資(精確到元),為了保證不要臨時(shí)兌換零錢,且取款的張數(shù)最少,取工資前要統(tǒng)計(jì)出所有職工的工資所需各種幣值(100,50,20,10,5,2,1元共7種)的張數(shù),請(qǐng)編程完成。輸入輸入一個(gè)工資數(shù)<10000元輸出輸出各個(gè)幣種的張數(shù),沒有的用0代替,中間用空格分開樣例輸入173樣例輸出1110011#include<stdio.h>intmain(){intj,z,a;intb[7]={100,50,20,10,5,2,1};//把所有幣值按從從大到小的順序存到一位數(shù)組中;ints[7]={0};//定義一個(gè)一位數(shù)組,元素值全為0;scanf("%d",&z);for(j=0;j<7;j++){a=z/b[j];s[j]=a;z=z-a*b[j];}//求需要各個(gè)幣值的個(gè)數(shù);printf("%d",s[0]);for(j=1;j<7;j++)printf("%d",s[j]);//輸出需要各個(gè)幣值的個(gè)數(shù);return0;}心得:這個(gè)題主要運(yùn)用貪婪算法的方法,利用可行的策略,求出可行解的一個(gè)解元素由所有解元素合成問題的一個(gè)可行解。要想取得的張數(shù)最少,可以先考慮幣值最大的進(jìn)行分發(fā),然后再取更小鈔票的幣值。依次取之。首先定義一個(gè)一維數(shù)組,把幣值從大到小存進(jìn)去,運(yùn)用一循環(huán),把每次算的錢數(shù)的結(jié)果,依次對(duì)數(shù)組的幣值進(jìn)行取整。然后依次存入數(shù)組輸出。10問題C:"水仙花數(shù)"問題1時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
138
解決:
75
[提交][狀態(tài)][討論版]題目描述判斷一個(gè)數(shù)是否為"水仙花數(shù)",所謂"水仙花數(shù)"是指這樣的一人數(shù):其各位數(shù)字的立方和等于該數(shù)本身。例如:371是一個(gè)"水仙花數(shù)",371=3^3+7^3+1^3.輸入一個(gè)三位數(shù)輸出1或者0(1代表此數(shù)為水仙花數(shù),0代表此數(shù)不是水仙花數(shù))樣例輸入371樣例輸出1#include<stdio.h>voidmain(){intn,x,y,z;scanf("%d",&n);x=n/100;//求三位數(shù)的百位數(shù)字;z=n%10;//求三位數(shù)的個(gè)位數(shù)字;y=(n-(x*100+z))/10;//求三位數(shù)的十位數(shù)字;if(n==x*x*x+y*y*y+z*z*z)printf("%d",1);elseprintf("%d",0);//判斷這個(gè)三位數(shù)是否為水仙花數(shù),是輸出1,否輸出2;}心得:首先,輸入一個(gè)三位數(shù),運(yùn)用對(duì)這個(gè)數(shù)取整,取余,運(yùn)用數(shù)學(xué)公式,分別算出它的百位,十位,和個(gè)位的數(shù)字,然后判斷這三個(gè)數(shù)字的平方和是否等于這個(gè)三位數(shù),如果是,輸出1,如果不是輸出0.11問題E:大小寫轉(zhuǎn)換時(shí)間限制:
1000Sec
內(nèi)存限制:
65536MB
提交:
182
解決:
116
[提交][狀態(tài)][討論版]題目描述讀入一些字符串,將其中的小寫字母轉(zhuǎn)成大寫字母(其他字符不變)。輸入輸入為多行,每行為一個(gè)字符串,字符串只由字母和數(shù)字組成,長(zhǎng)度不超過80。輸入以“Endoffile”結(jié)束。輸出對(duì)于每行輸入,輸出轉(zhuǎn)換后的字符串。樣例輸入HelloICPC200412345abcde樣例輸出HELLOICPC200412345ABCDE#include<stdio.h>#include<string.h>voidmain(){ intj; charstring[80];//定義一個(gè)字符串;while(scanf("%s",&string)!=EOF)//實(shí)現(xiàn)多行實(shí)例輸入; { for(j=0;j<80;j++) {if((string[j]>='a')&&(string[j]<='z'))string[j]=string[j]-32; }//實(shí)現(xiàn)字母大小寫轉(zhuǎn)換;printf("%s\n",string); }}心得:這個(gè)題目主要考察輸入輸出,還有大小寫轉(zhuǎn)換問題,首先還是定義一個(gè)字符串,用while(scanf("%s",&string)!=EOF)語句實(shí)現(xiàn)多行實(shí)例輸入,對(duì)這個(gè)字符串進(jìn)行循環(huán),如果這個(gè)字符串有大寫的話,轉(zhuǎn)化成小寫的,如果有小寫的話,那么轉(zhuǎn)化成大寫的。12問題B:取數(shù)游戲時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
46
解決:
39
[提交][狀態(tài)][討論版]題目描述有2個(gè)人輪流取2n個(gè)數(shù)中的n個(gè)數(shù),所取數(shù)之和大者為勝,請(qǐng)編寫算法,讓先取數(shù)者勝,模擬取數(shù)過程。輸入輸入兩行,第一行一個(gè)整數(shù)N<100000;第二行N個(gè)數(shù),用空格分開。輸出輸出取勝人取數(shù)和。失敗人取數(shù)的和,空格分開。樣例輸入6123456樣例輸出129#include<stdio.h>intmain(){ intn,i,sum1,sum2,a[100000]; while(scanf("%d",&n)!=EOF)//實(shí)現(xiàn)多行實(shí)例輸入; { sum1=sum2=0; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i=i+2) sum1=sum1+a[i]; for(i=1;i<n;i=i+2) sum2=sum2+a[i];//隔數(shù)取數(shù)求和:sum1,sum2; if(sum1>sum2) printf("%d%d\n",sum1,sum2); else printf("%d%d\n",sum2,sum1); }//順序輸出取勝人取數(shù)和。失敗人取數(shù)和; return0;}心得;這題主要運(yùn)用貪心算法的思想,要想先取數(shù)人獲勝,就得讓這個(gè)人每一步都盡可能取得最大的數(shù),這樣他取數(shù)的和才會(huì)總體大于后取數(shù)的那個(gè)人的取數(shù)和。首先定義一個(gè)一維數(shù)組,把要取得數(shù)從小到大的順序放在里面,然后一個(gè)人從第一個(gè)按照隔一個(gè)數(shù)取,求和sum1;另一個(gè)人從第二個(gè)按照隔一個(gè)人取,求和sum2,比較sum1和sum2的最大值,輸出。13問題C:整除問題時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
70
解決:
44
[提交][狀態(tài)][討論版]題目描述編寫算法對(duì)輸入的一個(gè)整數(shù),判斷它能否被3,5,7整除,并輸出以下信息之一:
能同時(shí)被3,5,7整除;
能被其中兩個(gè)數(shù)(要指出哪兩個(gè))整除;
能被其中一個(gè)數(shù)(要指出那一個(gè))整除;
不能被3,5,7任一個(gè)整除;輸入輸入一個(gè)整數(shù)<100000;輸出如果都能整除輸出“all"如果都不能整除輸出"nonel"如果能被3和5整除則輸出“35”。中間有一個(gè)空格,注意按由小到大輸出。樣例輸入35樣例輸出57#include<stdio.h>voidmain(){longn;intk;scanf("%d",&n);k=((n%3==0)+(n%5==0)*2+(n%7==0)*4);//判斷整數(shù)是否能被2,3,5整除;switch(k){ case7:printf("all");break; case6:printf("57");break; case5:printf("37");break; case4:printf("4");break; case3:printf("35");break; case2:printf("5");break; case1:printf("3");break; case0:printf("none");break;}//用switch語句輸出結(jié)果;}心得:這題主要考察輸入輸出問題,首先輸入一個(gè)整數(shù),運(yùn)用語句k=((n%3==0)+(n%5==0)*2+(n%7==0)*4),判斷這個(gè)數(shù)能否被2,3,5整除,用switch語句輸出所有可能發(fā)生的結(jié)果,然后輸出題目中所要求輸出的結(jié)果,其中用switch語句起到了優(yōu)化算法的作用。14問題A警察抓小偷時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
115
解決:
88
[提交][狀態(tài)][討論版]題目描述警察局抓了a,b,c,d,4名小偷嫌疑犯,其中只有一個(gè)人是小偷,審問中,a說:我不是小偷,b說:c是小偷,c說:小偷肯定是d,d說:c在冤枉人?,F(xiàn)在已經(jīng)知道4個(gè)人中3人說的是真話,一人說的是假話,問到底誰是小偷。輸入輸出小偷是c樣例輸入樣例輸出小偷是c#include<stdio.h>voidmain(){ intx; for(x=1;x<=4;x++)//執(zhí)行4次循環(huán); if(((x!=1)+(x==3)+(x==4)+(x!=4))==3)//判斷是否有三個(gè)人說真話的情況; printf("%c",64+x);}心得:這個(gè)題目主要考察把文字信息轉(zhuǎn)化為數(shù)字信息,即信息數(shù)字化,把A,B,C,D看成1,2,3,4;x定義為小偷,然后把A,B,C,D四人所說的話變成數(shù)字語言,判斷當(dāng)他們四個(gè)人有三個(gè)人說真話的情況,然后以把數(shù)字變成字母輸出。15問題B:n!時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
262
解決:
162
[提交][狀態(tài)][討論版]題目描述輸入一個(gè)整數(shù)N,輸出它的階乘。輸入輸入一個(gè)整數(shù)<20;輸出輸出它的階乘樣例輸入5樣例輸出120提示#include<stdio.h>intmain(){ intadd(intm);//對(duì)add函數(shù)進(jìn)行聲明; intn,sum; scanf("%d",&n); sum=add(n); printf("%d\n",sum); return0;} intadd(intn)//定義add函數(shù) { intf; if(n==0||n==1) { f=1; }//判斷當(dāng)n等于0和1這兩種情況; else f=n*add(n-1);//調(diào)用add函數(shù)求值; returnf; }心得:這里主要運(yùn)用函數(shù)的遞歸調(diào)用,首先用if對(duì)輸入的數(shù)進(jìn)行判斷,看是否為1和0,如果是,那么輸出其階乘等于1,如果不是那么調(diào)用函數(shù)f=n*add(n-1)進(jìn)行求值,add函數(shù)總共被調(diào)用了n次,求得最后的結(jié)果,輸出。16漢諾塔問題時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
224
解決:
138
[提交][狀態(tài)][討論版]題目描述把N個(gè)盤子從A柱子借助B柱子移到C柱子,要求每次只能移動(dòng)一個(gè)盤子,并且小盤子不能放到大盤子上。問如何移動(dòng)。輸入輸入盤子的個(gè)數(shù)N(<=10)輸出輸出移動(dòng)的次數(shù)。樣例輸入3樣例輸出7提示#include<stdio.h>intmain(){inti,j,n,sum;scanf("%d",&n);j=1;if(n!=1)//去除盤子的個(gè)數(shù)為1的情況;{for(i=1;i<=n;i++){j=j*2;}sum=j-1;//求盤子移動(dòng)的次數(shù);}elsesum=1;printf("%d",sum);return0;}心得:這題主要考察循環(huán)與遞歸問題,先假設(shè)盤子的個(gè)數(shù),取幾個(gè)特殊值,找出移動(dòng)盤子次數(shù)的規(guī)律。這個(gè)編程首先判斷盤子個(gè)數(shù),如果是1,則輸出1次,如果不是1,執(zhí)行n次循環(huán),求得j,然后求出移動(dòng)盤子的次數(shù)j-1,輸出。17問題D:猴子吃桃子問題(遞歸)時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
98
解決:
87
[提交][狀態(tài)][討論版]題目描述一只猴子摘了若干桃子,每天吃現(xiàn)有桃子的一半多一個(gè),到第10天時(shí)就只有一個(gè)桃子了,求原來有多少個(gè)桃。輸入輸出輸出原來的桃子數(shù)樣例輸入樣例輸出提示#include<stdio.h>intmain(){ inti,x=1; for(i=9;i>0;i--)//執(zhí)行9次循環(huán); x=(x+1)*2;//求每天桃子的個(gè)數(shù); printf("%d\n",x); return1;}心得:這個(gè)題目運(yùn)用數(shù)學(xué)中倒推的方法求得,先求出第10天桃子的個(gè)數(shù),然后再求出前一天桃子的個(gè)數(shù),直到求出第1天桃子的個(gè)數(shù),找出其規(guī)律。設(shè)桃子的個(gè)數(shù)為x,則每天剩余桃子的個(gè)數(shù)滿足公式x=(x+1)*2,再用一個(gè)for循環(huán)求出原來的桃子數(shù)。18問題A:A+BforInput-OutputPractice(I)時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
402
解決:
183
[提交][狀態(tài)][討論版]題目描述YourtaskistoCalculatea+b.
Tooeasy?!Ofcourse!Ispeciallydesignedtheproblemforacmbeginners.
Youmusthavefoundthatsomeproblemshavethesametitleswiththisone,yes,alltheseproblemsweredesignedforthesameaim.輸入Theinputwillconsistofaseriesofpairsofintegersaandb,separatedbyaspace,onepairofintegersperline.輸出Foreachpairofinputintegersaandbyoushouldoutputthesumofaandbinoneline,andwithonelineofoutputforeachlineininput.樣例輸入151020樣例輸出630提示#include<stdio.h>voidmain(){ inta,b,s; while(scanf("%d%d",&a,&b)!=EOF)//實(shí)現(xiàn)多行實(shí)例輸入;{s=a+b;//求a和b的和;printf("%d\n",s);}}心得:這個(gè)題主要考察了輸入和輸出問題,目的是計(jì)算整數(shù)a和b的和,首先用while(scanf("%d%d",&a,&b)!=EOF)語句實(shí)現(xiàn)多行實(shí)例輸入,然后求出a和b的和,輸出。19A+BforInput-OutputPractice(II)時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
310
解決:
179
[提交][狀態(tài)][討論版]題目描述YourtaskistoCalculatea+b.輸入InputcontainsanintegerNinthefirstline,andthenNlinesfollow.Eachlineconsistsofapairofintegersaandb,separatedbyaspace,onepairofintegersperline.輸出Foreachpairofinputintegersaandbyoushouldoutputthesumofaandbinoneline,andwithonelineofoutputforeachlineininput.樣例輸入2151020樣例輸出630提示[提交][狀態(tài)][討論版]#include<stdio.h>voidmain(){inta,b,n;scanf("%d",&n);while(n--)//限制求和的次數(shù);{scanf("%d%d",&a,&b);//輸入a,b;printf("%d\n",a+b);//求a,b的和;}}心得:這個(gè)題目主要考察了輸入輸出問題,題目要求第一行輸入要輸入要計(jì)算和的數(shù)量,用while(n--)語句滿足了題目的要求,即執(zhí)行n次,然后就是輸入a和b,接著求出和,輸出。20問題C:A+BforInput-OutputPractice(III)時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
314
解決:
169
[提交][狀態(tài)][討論版]題目描述YourtaskistoCalculatea+b.輸入Inputcontainsmultipletestcases.Eachtestcasecontainsapairofintegersaandb,onepairofintegersperline.Atestcasecontaining00terminatestheinputandthistestcaseisnottobeprocessed.輸出Foreachpairofinputintegersaandbyoushouldoutputthesumofaandbinoneline,andwithonelineofoutputforeachlineininput.樣例輸入15102000樣例輸出630#include<stdio.h>voidmain(){ inta,b;while(scanf("%d%d",&a,&b)!=EOF&&!(a==0&&b==0))/*實(shí)現(xiàn)多行實(shí)例輸入,當(dāng)a,b都為0時(shí)結(jié)束*/ { printf("%d\n",a+b);//求a,b的和; }}心得:這個(gè)題目也是輸入輸出問題,目的也是求出a和b的和,然后按要求輸入輸出,對(duì)于輸入:while(scanf("%d%d",&a,&b)!=EOF&&!(a==0&&b==0))運(yùn)用這個(gè)語句實(shí)現(xiàn)多行實(shí)例輸入,如果輸入00,則結(jié)束,然后求得a和b的和,輸出。21問題D:A+BforInput-OutputPractice(IV)時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
287
解決:
166
[提交][狀態(tài)][討論版]題目描述YourtaskistoCalculatethesumofsomeintegers.輸入Inputcontainsmultipletestcases.EachtestcasecontainsaintegerN,andthenNintegersfollowinthesameline.Atestcasestartingwith0terminatestheinputandthistestcaseisnottobeprocessed.輸出Foreachgroupofinputintegersyoushouldoutputtheirsuminoneline,andwithonelineofoutputforeachlineininput.SampleInput樣例輸入410234051128550樣例輸出5531提示#include<stdio.h>voidmain(){ inta,s; intn=1; while(n!=0) { scanf("%d",&n); if(n==0)break;//判斷n是否為斷0,是結(jié)束,不是執(zhí)行下面語句; s=0; for(inti=0;i<n;i++)//執(zhí)行n次循環(huán); { scanf("%d",&a); s=s+a;//每次循環(huán)求和; }printf("%d\n",s); }}心得:同樣,這個(gè)題目也是主要考察了輸入輸出問題,計(jì)算一些整數(shù)的和,并按指定的格式輸出,首先輸入一些整數(shù)判斷是否都為0,如果是,則結(jié)束,如果不是則執(zhí)行循環(huán),把所有輸入的整數(shù)相加,然后輸出。22問題B:埃及分?jǐn)?shù)時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
21
解決:
11
[提交][狀態(tài)][討論版]題目描述
設(shè)計(jì)一個(gè)算法,把一個(gè)真分?jǐn)?shù)表示為最少埃及分?jǐn)?shù)之和的形式,所謂埃及分?jǐn)?shù),是指分子為1的分?jǐn)?shù)。
如7/8=1/2+1/3+1/24。輸入輸入兩個(gè)整數(shù),第一個(gè)表示分子,第二個(gè)數(shù)表示分母。輸出輸出埃及分?jǐn)?shù)之和,按分母有小到大的順序,中間用空格分開。樣例輸入78樣例輸出2324提示#include<stdio.h>intmain(){inta,b,c;while(scanf("%d%d",&a,&b)!=EOF)//實(shí)現(xiàn)多行實(shí)例輸入;{if(a==1||b%a==0)printf("%d\n",b/a);//如果這個(gè)數(shù)為1或分子為1,輸出分母的值;while(a!=1){c=b/a+1;a=a*c-b;b=b*c;printf("%d",c);//通過公式求出埃及分?jǐn)?shù)。if(b%a==0||a==1){printf("%d\n",b/a); a=1;}}}return0;}心得:首先通過while語句實(shí)現(xiàn)多行實(shí)例輸入,首先輸入這是分?jǐn)?shù)的的分子分母,判斷這個(gè)數(shù)是否為1或這個(gè)數(shù)的分子為1,如果是,直接輸出分母的值;接下來用一while循環(huán),通過求公式依次算出埃及數(shù),然后輸出,用每次計(jì)算的結(jié)果判斷分子是否能整除分母或分子為一,如果是,直接輸出整除后結(jié)果。23問題A:完數(shù)時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
192
解決:
70
[提交][狀態(tài)][討論版]題目描述完數(shù)的定義:如果一個(gè)大于1的正整數(shù)的所有因子之和等于它的本身,則稱這個(gè)數(shù)是完數(shù),比如6,28都是完數(shù):6=1+2+3;28=1+2+4+7+14。
本題的任務(wù)是判斷兩個(gè)正整數(shù)之間完數(shù)的個(gè)數(shù)。輸入輸入數(shù)據(jù)包含多行,第一行是一個(gè)正整數(shù)n,表示測(cè)試實(shí)例的個(gè)數(shù),然后就是n個(gè)測(cè)試實(shí)例,每個(gè)實(shí)例占一行,由兩個(gè)正整數(shù)num1和num2組成,(1<num1,num2<10000)
。輸出對(duì)于每組測(cè)試數(shù)據(jù),請(qǐng)輸出num1和num2之間(包括num1和num2)存在的完數(shù)個(gè)數(shù)。樣例輸入22557樣例輸出01提示#include<stdio.h>intmain(){ intn,num1,num2,sum,m,i; intj,k; while(scanf("%d",&n)!=EOF)//實(shí)現(xiàn)多行實(shí)例輸入; {for(i=0;i<n;i++)//執(zhí)行n次循環(huán); { scanf("%d%d",&num1,&num2);//輸入兩個(gè)整數(shù); m=0; for(j=num1;j<=num2;j++)//執(zhí)行num2-num1+1次循環(huán); { sum=0; for(k=1;k<j;k++) { if(j%k==0)//判斷num1和num2之間的數(shù)是否能被k整除; sum=sum+k; }if(sum==j) m++;//如果是完數(shù),統(tǒng)計(jì)其個(gè)數(shù); } printf("%d\n",m); } } return0;}心得:這個(gè)題主要考察了輸入輸出和循環(huán)問題,用while語句實(shí)現(xiàn)多行輸入,首先輸入兩個(gè)數(shù),判斷這兩個(gè)數(shù)之間的數(shù)(包括這兩個(gè)數(shù))是不是完數(shù),如果是完數(shù),則記錄這兩個(gè)數(shù)之間完數(shù)的個(gè)數(shù),然后輸出。24問題C:FibbonacciNumber_Hdu2070時(shí)間限制:
1Sec
內(nèi)存限制:
128MB
提交:
291
解決:
164
[提交][狀態(tài)][討論版]題目描述Yourobjectiveforthisquestionistodevelopaprogramwhichwillgenerateafibbonaccinumber.Thefibbonaccifunctionisdefinedassuch:
f(0)=0
f(1)=1
f(n)=f(n-1)+f(n-2)
Yourprog
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年德陽農(nóng)業(yè)科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試模擬試題有答案解析
- 2026年保定幼兒師范高等??茖W(xué)校高職單招職業(yè)適應(yīng)性測(cè)試模擬試題帶答案解析
- 2026年滄州幼兒師范高等??茖W(xué)校單招職業(yè)技能考試參考題庫帶答案解析
- 2026年安徽藝術(shù)職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)筆試備考試題帶答案解析
- 2026年河北對(duì)外經(jīng)貿(mào)職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫帶答案解析
- 2026年濱州職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考題庫有答案解析
- 投資合作協(xié)議(2025年風(fēng)險(xiǎn)分擔(dān))
- 2026年湖南財(cái)經(jīng)工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試備考題庫有答案解析
- 2026年新疆建設(shè)職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)筆試備考題庫附答案詳解
- 碳匯項(xiàng)目咨詢服務(wù)協(xié)議2025年服務(wù)期限條款
- 湖南省長(zhǎng)沙市2024年九年級(jí)上學(xué)期期末化學(xué)試題附參考答案
- 鉆機(jī)租賃合同示范文本
- 安徽大學(xué)《材料力學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 代客操盤合同 合同模板
- 高??蒲薪?jīng)費(fèi)存在問題及對(duì)策建議
- (2024年)幼師必備幼兒園安全教育PPT《交通安全》
- 縮水機(jī)安全操作規(guī)程
- 顱內(nèi)壓波形分析
- 2023年高校教師資格證之高等教育學(xué)真題及答案
- dosm新人落地訓(xùn)練全流程課程第五步三次面談
- 石湖礦綜采放頂煤可行性技術(shù)論證1
評(píng)論
0/150
提交評(píng)論