国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

藍橋杯——計算機研究生機試真題(2017.2.16)

2019-11-08 19:27:27
字體:
來源:轉載
供稿:網友
1. (2011年北京大學計算機研究生機試真題)雞兔同笼題目描述:一個笼子里面關了雞和兔子(雞有2只腳,兔子有4只腳,沒有例外)。已經知道了笼子里面腳的總數a,問笼子里面至少有多少只動物,至多有多少只動物。輸入:第1行是測試數據的組數n,后面跟著n行輸入。每組測試數據占1行,每行一個正整數a (a < 32768)輸出:輸出包含n行,每行對應一個輸入,包含兩個正整數,第一個是最少的動物數,第二個是最多的動物數,兩個正整數用一個空格分開如果沒有滿足要求的答案,則輸出兩個0。樣例輸入:2320樣例輸出:0 0

5 10

源代碼:

法一:可將問題情境轉化為輸入一個整數n,若n為奇數,輸出“0 0”;否則若n是4的倍數,輸出n/4 n/2的值,否則輸出n/4+1 n/2的值(最小值即兔子數量最多雞最少 最大值即雞數量最多兔子數量最少的情況)

#include <stdio.h>int main(){	int a,n;	int t=0,sum;	scanf("%d",&n);	while(t<n)	{		scanf("%d",&a);		if(a%2!=0)			PRintf("0 0/n");		else if(a%4==0)			printf("%d %d/n",a/4,a/2);		else			printf("%d %d/n",a/4+1,a/2);		t++;	}    return 0;}法二:枚舉所有可能情況,將雞兔總數存入數組,然后取最值,但是時間代價大(注意最大值<=a/2的條件,故為了提高效率,可將主函數中的雙重循環處設為<=a/2,否則會超時)

#include <stdio.h>#define maxn 50000void Find(int num[],int n){	int i;	int max,min;	max=min=num[0];	for(i=1;i<n;i++)	{		if(num[i]>max)			max=num[i];		if(num[i]<min)			min=num[i];	}	printf("%d %d/n",min,max);}int main(){	int a,n;	int i,j,t=0,count;	int num[maxn];	scanf("%d",&n);	while(t<n)	{		scanf("%d",&a);		count=0;		for(i=0;i<=a/2;i++)		{			for(j=0;j<=a/2;j++)			{				if(2*i+4*j==a)					num[count++]=i+j;			}		}		if(count==0)			printf("0 0/n");		else			Find(num,count);		t++;	}	return 0;}程序截圖:

2. (2003-2005年華中科技大學計算機研究生機試真題)打印日期題目描述:給出年分m和一年中的第n天,算出第n天是幾月幾號。輸入:輸入包括兩個整數y(1<=y<=3000),n(1<=n<=366)。輸出:可能有多組測試數據,對于每組數據,按 yyyy-mm-dd的格式將輸入中對應的日期打印出來。樣例輸入:2000 32000 312000 402000 602000 612001 60樣例輸出:2000-01-032000-01-312000-02-092000-02-292000-03-012001-03-01

源代碼:

#include <stdio.h>void Find(int a[],int y,int n,int t)            //第n天"查找" {	int i,j;	int m,d,sum=0;	for(i=1;i<t;i++)	{		if(n<=a[i])		{			j=i;			break;		}	}	m=j;	d=n-a[m-1];	printf("%04d-%02d-%02d/n",y,m,d);}int main(){	int y,n;	int sum1[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};   //兩個數組分別記錄平年/閏年從1.1到第m個月月底的總天數 	int sum2[13]={0,31,60,91,121,152,182,213,244,274,305,335,366};	int sum,m,d;	while(scanf("%d %d",&y,&n)!=EOF)	{		if( (y%4==0 && y%100!=0) || (y%400==0) )			Find(sum2,y,n,13);		else			Find(sum1,y,n,13);	}	return 0;}程序截圖:

3. (2008年北京大學方正實驗室計算機研究生機試真題)簡單密碼題目描述:Julius Caesar曾經使用過一種很簡單的密碼。對于明文中的每個字符,將它用它字母表中后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組。每組數據都有如下的形式,而且各組測試數據之間沒有空白的行。一組測試數據包括三部分:1.    起始行 - 一行,包括字符串 "START" 2.    密文 - 一行,給出密文,密文不為空,而且其中的字符數不超過2003.    結束行 - 一行,包括字符串 "END" 在最后一組測試數據之后有一行,包括字符串 "ENDOFINPUT"。輸出:對每組數據,都有一行輸出,給出密文對應的明文。樣例輸入: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 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 <string.h>#define maxlen 210#define flag 15void Fun(char str[],int n){	int i;	for(i=0;i<n;i++)	{		if(str[i]>='A' && str[i]<='E')			str[i]+=21;		else if(str[i]>='F' && str[i]<='Z')   //注意else,寫成if會將處理后的A~E繼續處理 			str[i]-=5;	}}int main(){	char start[flag],end[flag];	char str[maxlen];	int i,len;	while(gets(start)!=NULL)	{		if(strcmp(start,"ENDOFINPUT")==0)     //所有輸入結束標志 			break;		if(strcmp(start,"START")==0)          //輸入開始標志,處理字符串 		{			gets(str);			len=strlen(str);			Fun(str,len);		}		gets(end);		if(strcmp(end,"END")==0)              //輸入結束標志,將處理后的字符串整串輸出 			puts(str);	}	return 0;}程序截圖:

※4. (2006年上海交通大學計算機研究生機試真題)2的冪次方題目描述:    Every positive number can be presented by the exponential form.For example, 137 = 2^7 + 2^3 + 2^0。    Let's present a^b by the form a(b).Then 137 is presented by 2(7)+2(3)+2(0). Since 7 = 2^2 + 2 + 2^0 and 3 = 2 + 2^0 , 137 is finally presented by 2(2(2)+2 +2(0))+2(2+2(0))+2(0).     Given a positive number n,your task is to present n with the exponential form which only contains the digits 0 and 2.輸入:    For each case, the input file contains a positive integer n (n<=20000).輸出:    For each case, you should output the exponential form of n an a single line.Note that,there should not be any additional white spaces in the line.樣例輸入:1315樣例輸出:2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

源代碼:

#include <stdio.h>#include <math.h>void solve(int n)  {    int cnt=0;      while(pow(2,cnt)<=n)          cnt++;    cnt--;    if(cnt==0)        printf("2(0)");    else if(cnt==1)        printf("2");      else      {          printf("2(");          solve(cnt);          printf(")");      }      int num_r=n-pow(2,cnt);      if(num_r)      {          printf("+");          solve(num_r);      }  }  int main()  {      int n;      while(scanf("%d",&n)!=EOF)      {          solve(n);          printf("/n");      }      return 0;  }程序截圖:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宾川县| 白河县| 永寿县| 杂多县| 东港市| 贺州市| 晴隆县| 金坛市| 东海县| 东港市| 临沂市| 南和县| 平泉县| 长丰县| 察隅县| 淅川县| 炉霍县| 平凉市| 宝山区| 浏阳市| 大悟县| 新龙县| 垣曲县| 民和| 礼泉县| 台南县| 壤塘县| 牡丹江市| 万全县| 玉林市| 武川县| 凌海市| 翁源县| 新竹市| 依兰县| 漳浦县| 浦城县| 中江县| 资溪县| 额敏县| 肥城市|