1. 程式人生 > >藍橋測試1->2015年第六屆藍橋杯省賽

藍橋測試1->2015年第六屆藍橋杯省賽

1.StringInGrid函式會在一個指定大小的格子中列印指定的字串。 要求字串在水平、垂直兩個方向上都居中。 如果字串太長,就截斷。 如果不能恰好居中,可以稍稍偏左或者偏上一點。

下面的程式實現這個邏輯,請填寫劃線部分缺少的程式碼。



#include <stdio.h>
#include <string.h>

void StringInGrid(int width, int height, const char* s)
{
				int i,k;
				char buf[1000];
				strcpy(buf, s);
				if(strlen(s)>width-2) buf[width-2]=0;
				
				printf("+");
				for(i=0;i<width-2;i++) printf("-");
				printf("+\n");
				
				for(k=1; k<(height-1)/2;k++){
								printf("|");
								for(i=0;i<width-2;i++) printf(" ");
								printf("|\n");
				}
				
				printf("|");
				
				printf("%*s%s%*s",(11分)
); //填空 printf("|\n"); for(k=(height-1)/2+1; k<height-1; k++){ printf("|"); for(i=0;i<width-2;i++) printf(" "); printf("|\n"); } printf("+"); for(i=0;i<width-2;i++) printf("-"); printf("+\n"); } int main() { StringInGrid(20,6,"abcd1234"); return 0; }

對於題目中資料,應該輸出: +------------------+ | | | abcd1234 | | | | | +------------------+

(如果出現對齊問題,參看【圖1.jpg】)

填空:(width-2-strlen(s))/2," ",s,(width-2-strlen(s))/2," "

%*s,%*d......等輸出格式,舉個例子,比較好說明一下:

printf("%*s",5,"123"),執行一下,這條語句,輸出##123(#代表一個空格)
類似於%5d 這樣的狀況,這裡*被常量5代替,用於控制最小字元寬度,主要是針對,最小字元寬度未知的情況,當然*可以對應整型變數

2.

1,2,3...9 這九個數字組成一個分數,其值恰好為1/3,如何組法?

下面的程式實現了該功能,請填寫劃線部分缺失的程式碼。

#include <stdio.h>

void test(int x[])
{
				int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
				int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
				
				if(a*3==b) printf("%d / %d\n", a, b);
}

void f(int x[], int k)
{
				int i,t;
				if(k>=9){
								test(x);
								return;
				}
				
				for(i=k; i<9; i++){
								{t=x[k]; x[k]=x[i]; x[i]=t;}
								f(x,k+1);
								(13分);// 填空處
				}
}
				
int main()
{
				int x[] = {1,2,3,4,5,6,7,8,9};
				f(x,0);				
				return 0;
}
此題主要理解生成全排列的函式

3.獎券數目(結果填空)   (3分)

有些人很迷信數字,比如帶“4”的數字,認為和“死”諧音,就覺得不吉利。 雖然這些說法純屬無稽之談,但有時還要迎合大眾的需求。某抽獎活動的獎券號碼是5位數(10000-99999),要求其中不要出現帶“4”的號碼,主辦單位請你計算一下,如果任何兩張獎券不重號,最多可發出獎券多少張。

請你計算一共有多少種可能的方案。

輸入格式:

無輸入

輸出格式:

在一行內輸出一個整數,代表最多可發獎券數目,不要寫任何多餘的內容或說明性文字。

輸出樣例:123

法一:利用排列組合做,8*9*9**9*9=52488
//法二:程式碼
#include <cstdio>
#include <iostream>
int main(){
	int sum=0;
	for(int i=1;i<=9;i++){
		for(int j=0;j<=9;j++){
			for(int t=0;t<=9;t++){
				for(int a=0;a<=9;a++){
					for(int b=0;b<=9;b++){
						if(i!=4&&j!=4&&t!=4&&a!=4&&b!=4)
							sum++;
					}
				}
			}
		}
	}
	printf("%d\n",sum);
	return 0;
}
//52488
4.星系炸彈(結果填空)   (5分)

在X星系的廣袤空間中漂浮著許多X星人造“炸彈”,用來作為宇宙中的路標。 每個炸彈都可以設定多少天之後爆炸。 比如:阿爾法炸彈2015年1月1日放置,定時為15天,則它在2015年1月16日爆炸。 有一個貝塔炸彈,2014年11月9日放置,定時為1000天,請你計算它爆炸的準確日期。

輸入格式:

無輸入

輸出格式:

請在一行內輸出該日期,格式為 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19 請嚴格按照格式書寫。不能出現其它文字或符號。

//法一:查日曆 得2017-08-05
//法二:excel
//法三:計算器的計算日期功能
//法四:程式碼
#include <cstdio>
#include <cstring>
int judge(int year){
	if(year%4==0&&year%100!=0||year%400==0)//判斷閏年
		return 366;
	return 365;
}
int main(){
	int year,month,day=1000-52;//從2015年開始算
	int m[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
	for(year=2015;day/judge(year);year++)
		day-=judge(year);
	int loc=judge(year)-365;
	for(month=1;day/m[loc][month];month++)
		day-=m[loc][month];
	printf("%04d-%02d-%02d\n",year,month,day);
	return 0;
}

5.觀察下面的加法算式:

(如果有對齊問題,可以參看【圖1.jpg】) 

其中,相同的漢字代表相同的數字,不同的漢字代表不同的數字。

請你填寫“三羊獻瑞”所代表的4位數字(答案唯一),不要填寫任何多餘內容。

//法一:八重迴圈
//法二:先生成全排列
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
int main(){
	int a[10]={0,1,2,3,4,5,6,7,8,9};
	do{//用全排列前8位
		if(a[0]&&a[4]){
			int num1=a[0]*1000+a[1]*100+a[2]*10+a[3];
			int num2=a[4]*1000+a[5]*100+a[6]*10+a[1];
			int num3=a[4]*10000+a[5]*1000+a[2]*100+a[1]*10+a[7];
			if(num1+num2==num3){
				cout<<num2<<endl;
				break;
			}
		}
	}while(next_permutation(a,a+10));
    return 0;
}
//1085
6.加法變乘法(結果填空)   (17分)

我們都知道:1+2+3+ ... + 49 = 1225 現在要求你把其中兩個不相鄰的加號變成乘號,使得結果為2015

比如: 1+2+3+...+10 · 11+12+...+27 · 28+29+...+49 = 2015 就是符合要求的答案

請你尋找另外一個可能的答案,並把位置靠前的那個乘號左邊的數字提交(對於示例,就是提交10)。

#include <cstdio>
#include <cstring>
int main(){
	int sum;
	for(int i=1;i<=46;i++){//i,j均為第幾個+號
		for(int j=i+2;j<=48;j++){
			sum=0;
			for(int t=1;t<i;t++){
				sum+=t;
			}
			sum=sum+i*(i+1);
			for(int t=i+2;t<j;t++){
				sum+=t;
			}
			sum=sum+j*(j+1);
			for(int t=j+2;t<=49;t++){
				sum+=t;
			}
			if(sum==2015&&i!=10){
				printf("%d\n",i);
				return 0;
			}
		}
	}
	return 0;
}
 7.牌型種數(結果填空)   (21分)

小明被劫持到X賭城,被迫與其他3人玩牌。 一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。 這時,小明腦子裡突然冒出一個問題: 如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?

//法一:暴力
#include <cstdio>
#include <cstring>
int main(){
	int sum=0;
	for(int a=0;a<=4;a++){
		for(int b=0;b<=4;b++){
			for(int c=0;c<=4;c++){
				for(int d=0;d<=4;d++){
					for(int e=0;e<=4;e++){
						for(int f=0;f<=4;f++){
							for(int g=0;g<=4;g++){
								for(int h=0;h<=4;h++){
									for(int i=0;i<=4;i++){
										for(int j=0;j<=4;j++){
											for(int k=0;k<=4;k++){
												for(int l=0;l<=4;l++){
													for(int m=0;m<=4;m++){
														if(a+b+c+d+e+f+g+h+i+j+k+l+m==13)
															sum++;
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
    printf("%d\n",sum);
}
//法二:搜尋
#include <cstdio>
#include <iostream>
using namespace std;
int count=0;
void dfs(int step,int sum){//step為該走的步數,即該拿哪個號碼的牌了  sum為當前的牌總數
	if(step==14){
		count+=(sum==13);
		return;
	}
	if(sum>13)
		return;
	for(int i=0;i<=4;i++){
		dfs(step+1,sum+i);
	}
}
int main(){
	dfs(1,0);
	cout<<count<<endl;
	return 0;
}

8.移動距離   (15分)

X星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3... 當排滿一行時,從下一行相鄰的樓往反方向排號。 比如:當小區排號寬度為6時,開始情形如下:

1 2 3 4 5 6

12 11 10 9 8 7

13 14 15 .....

我們的問題是:已知了兩個樓號m和n,需要求出它們之間的最短移動距離(不能斜線方向移動)

要求輸出一個整數,表示m n 兩樓間最短移動距離。

輸入格式:

在一行中輸入為3個整數w m n,空格分開,都在1到10000範圍內 w為排號寬度,m,n為待計算的樓號。

輸出格式:

要求輸出一個整數,表示m n 兩樓間最短移動距離。

輸入樣例1:

6 8 2

輸出樣例1:

4

輸入樣例2:

4 7 20

輸出樣例2:

5

//此題需要細緻考慮各種情況
//x:需要考慮此數(m和n)能不能除盡w
//y:需要考慮此數(m和n)能不能除盡w,在此基礎上再考慮x在的行是正方向還是逆方向                                                                                 
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
	int w,m,n;
	int x1,y1,x2,y2;
	cin>>w>>m>>n;
	x1=m/w+(m%w!=0);
	x2=n/w+(n%w!=0);
	y1=(m%w==0?(x1%2==0?1:w):(x1%2==0?w-m%w+1:m%w));
	y2=(n%w==0?(x2%2==0?1:w):(x2%2==0?w-n%w+1:n%w));
	cout<<(int)abs(x1-x2)+(int)abs(y1-y2)<<endl;
	return 0;
}

9.壘骰子   (25分)

賭聖atm晚年迷戀上了壘骰子,就是把骰子一個壘在另一個上邊,不能歪歪扭扭,要壘成方柱體。 經過長期觀察,atm 發現了穩定骰子的奧祕:有些數字的面貼著會互相排斥! 我們先來規範一下骰子:1 的對面是 4,2 的對面是 5,3 的對面是 6。 假設有 m 組互斥現象,每組中的那兩個數字的面緊貼在一起,骰子就不能穩定的壘起來。 atm想計算一下有多少種不同的可能的壘骰子方式。 兩種壘骰子方式相同,當且僅當這兩種方式中對應高度的骰子的對應數字的朝向都相同。 由於方案數可能過多,請輸出模 10^9 + 7 的結果。

不要小看了 atm 的骰子數量哦~

輸入格式:

第一行兩個整數 n m n表示骰子數目 接下來 m 行,每行兩個整數 a b ,表示 a 和 b 數字不能緊貼在一起。

輸出格式:

一行一個數,表示答案模 10^9 + 7 的結果。

輸入樣例:

2 1
1 2

輸出樣例:

544

「資料範圍」

對於 30% 的資料:n <= 5
對於 60% 的資料:n <= 100
對於 100% 的資料:0 < n <= 10^9, m <= 36
//首先想到的是搜尋,但看到資料規模,最大已經達到了10^9,說明此題最佳方式不是搜尋
//於是考慮動態規劃:
//仔細一想,若設dp[i][j]為第i層頂面點數為j的方案數,則 Dp[i][j]就等於i-1高度時所有與j的反面無衝突的方案數累加
//由這個狀態轉移方程從而看出了重疊子問題,最優子結構!!!說明可以用O(n)級別的動態規劃處理題目
//而且對於大資料,肯定比搜尋強,但能不能解決極端大資料未知
//另外  後的總方案數還要乘以(4^n)   因為每一個骰子可以4面轉
//由於  每一層的規劃只與前一層有關  所以可以採用滾動陣列, 不然記憶體會超
//程式碼:
#include <cstdio>
#include <iostream>
using namespace std;
#define MOD 1000000007
long long int quick_pow(int a,int n){
	long long int temp=a,sum=1;
	while(n){
		if(n&1)
			sum=(sum*temp)%MOD;
		temp=(temp*temp)%MOD;
		n=n>>1;
	}
	return sum;
}
int main(){
	int n,m;
	int x,y;
	int conflict[7][7];//互斥面 為0表示互斥
	int towards[7]={0,4,5,6,1,2,3};//骰子對稱面

	long long int dp[2][7];
	long long sum=0;//方案數
	int e=0;//滾動標誌
	cin>>n>>m;
	for(int i=1;i<=6;i++){
		for(int j=1;j<=6;j++){
			conflict[i][j]=1;
		}
	}
	for(int i=1;i<=m;i++){
		scanf("%d%d",&x,&y);
		conflict[x][y]=conflict[y][x]=0;
	}

	for(int i=1;i<=6;i++){//初始化第一層 先不考慮4面轉
		dp[e][i]=1;
	}
	for(int i=2;i<=n;i++){//當前層
		e=1-e;
		for(int j=1;j<=6;j++){//點數
			dp[e][j]=0;
			for(int t=1;t<=6;t++){//找與當前點數的對面不衝突的點
				if(conflict[towards[j]][t]){
					dp[e][j]=(dp[e][j]+dp[1-e][t])%MOD;
				}
			}
		}
	}
	for(int i=1;i<=6;i++){
		sum=(sum+dp[e][i])%MOD;
	}
	sum=(sum*quick_pow(4,n))%MOD;//四面轉
	cout<<sum<<endl;
	return 0;
}
//以動態規劃的方式在O(N)的時間複雜度內求解, 但對於資料規模為10^9的資料而已, O(N)顯然是不夠的
//以dp[i][j]來表示在高度為i的情況下, 骰子柱頂面點數為j的總方案數 
//dp[i][j]的值將等於前一高度所有方案的選擇性累加
//一說到選擇性累加,是不是可以聯想到矩陣相乘? 
//在用 矩陣快速冪的應用->優化遞推式  求斐波那契數列例子中
//那個只包含0和1的矩陣就是這樣通過列向量的0或1對左邊矩陣進行選擇累加, 從而得出右邊矩陣的
//那麼, 我們也可以通過類似的結構來完成對骰子方案的選擇性累加
//我們用一個單行矩陣dp[1][j]來記錄高度為N時, 頂面為j的總方案數
//為了構造出利用矩陣相乘(矩陣dp X 矩陣conflict)進行選擇性疊加,對於conflict陣列,進行一些改進:
//conflict[i][j]=0表示,i 與 j的對稱面 互斥
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define MOD 1000000007
struct matrix{//矩陣
	long long int m[7][7];
};
long long int quick_pow(int a,int n){//快速冪
	long long int c=1,temp=a;
	if(n==0)
		return 1;
	while(n){
		if(n&1)
			c=(c*temp)%MOD;
		temp=(temp*temp)%MOD;
		n=n>>1;
	}
	return c;
}
void matrix_mul(long long int re[][7],long long int a[][7],long long int b[][7]){
	for(int i=1;i<=6;i++){
		if(a[0][i]){
			for(int t=1;t<=6;t++){
				re[0][t]=(re[0][t]+a[0][i]*b[i][t])%MOD;
			}
		}
	}
}
struct matrix mul(struct matrix a,struct matrix b){//定義的矩陣 相乘
	struct matrix c;
	memset(c.m,0,sizeof(c.m));
	for(int i=1;i<=6;i++){
		for(int j=1;j<=6;j++){
			if(a.m[i][j]){
				for(int t=1;t<=6;t++){
					c.m[i][t]=(c.m[i][t]+a.m[i][j]*b.m[j][t])%MOD;
				}
			}
		}
	}
	return c;
}
struct matrix quick_matrix_pow(struct matrix a,int n){//定義的矩陣 快速冪
	struct matrix e,temp=a;
	memset(e.m,0,sizeof(e.m));
	for(int i=1;i<=6;i++){
		e.m[i][i]=1;
	}
	if(n==0)
		return e;
	while(n){
		if(n&1)
			e=mul(e,temp);
		temp=mul(temp,temp);
		n=n>>1;
	}
	return e;
}
int main(){
	int n,m,x,y;
	int towards[7]={0,4,5,6,1,2,3};
	struct matrix mat,conflict;//把conflict表示為矩陣,便於相乘
	long long int dp[1][7],result[1][7],sum=0;//這倆矩陣未表示為 定義的矩陣,直接用陣列
	cin>>n>>m;
	for(int i=1;i<=6;i++){
		dp[0][i]=1;
	}
	for(int i=1;i<=6;i++){
		for(int j=1;j<=6;j++){
			conflict.m[i][j]=1;
		}
	}
	for(int i=1;i<=m;i++){
		cin>>x>>y;
		conflict.m[x][towards[y]]=conflict.m[y][towards[x]]=0;
	}
	mat=quick_matrix_pow(conflict,n-1);//矩陣快速冪
	memset(result,0,sizeof(result));
	matrix_mul(result,dp,mat.m);//再用dp矩陣與mat.m矩陣相乘 放到result矩陣裡
	for(int i=1;i<=6;i++){
		sum=(sum+result[0][i])%MOD;
	}
	sum=(sum*quick_pow(4,n))%MOD;
	cout<<sum<<endl;
	return 0;
}

10.生命之樹   (31分)

在X森林裡,上帝建立了生命之樹。

他給每棵樹的每個節點(葉子也稱為一個節點)上,都標了一個整數,代表這個點的和諧值。 上帝要在這棵樹內選出一個非空節點集S,使得對於S中的任意兩個點a,b,都存在一個點列 {a, v1, v2, ..., vk, b} 使得這個點列中的每個點都是S裡面的元素,且序列中相鄰兩個點間有一條邊相連。

在這個前提下,上帝要使得S中的點所對應的整數的和儘量大。 這個最大的和就是上帝給生命之樹的評分。

經過atm的努力,他已經知道了上帝給每棵樹上每個節點上的整數。但是由於 atm 不擅長計算,他不知道怎樣有效的求評分。他需要你為他寫一個程式來計算一棵樹的分數。

輸入格式:

第一行一個整數 n 表示這棵樹有 n 個節點。 第二行 n 個整數,依次表示每個節點的評分。 接下來 n-1 行,每行 2 個整數 u, v,表示存在一條 u 到 v 的邊。由於這是一棵樹,所以是不存在環的。

輸出格式:

輸出一行一個數,表示上帝給這棵樹的分數。

輸入樣例:

5
1 -2 -3 4 5
4 2
3 1
1 2
2 5

輸出樣例:

8

資料範圍

對於 30% 的資料,n <= 10
對於 100% 的資料,0 < n <= 10^5, 每個節點的評分的絕對值不超過 10^6 。
//此題的樹其實為圖,此題結合了圖的深搜和dp:利用深度優先搜尋遍歷圖,利用dp思想在遍歷過程解決問題
//典型的樹狀dp,求權值最大的連通子圖
//dp[i]表示:以i為根節點的子樹,權值之和中,最大的(因為是子樹,所以一定包含i節點)
//dp[i] += dp[k],這裡的k是指i的孩子節點,且dp[k]一定要是大於0的,如果小於0,會使總和變小,加它還不如不加
//所以就用一個遞迴,從一個根節點出發,一直到葉子節點,
//這時候就回溯了,回溯的時候就會把下層節點的dp值帶回到上層。每計算出一個i的dp值,
//就與當前儲存的最大值比較。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
//用前向星存圖
struct edge{
	int next;
	int to;
}edges[100000];//從1開始存
int head[100005];//從1開始存
int weight[100005];//從1開始存
int book[100005];
int dp[100005];
int cnt,n,max_weight=0;
void Init(){//初始化
	for(int i=1;i<=n;i++){
		edges[i].next=0;
		edges[i].to=0;
	}
	for(int i=1;i<=n;i++){
		head[i]=0;
	}
	cnt=0;
}
void Add(int x,int y){//加邊
	cnt++;
	edges[cnt].next=head[x];
	edges[cnt].to=y;
	head[x]=cnt;
}
void dfs(int x){//利用深度優先搜尋遍歷圖
	int y;
	for(int i=head[x];i;i=edges[i].next){
		y=edges[i].to;
		if(!book[y]){
			book[y]=1;
			dfs(y);
			dp[x]+=(dp[y]>0?dp[y]:0);
		}
	}
	if(dp[x]>max_weight)
		max_weight=dp[x];
}
int main(){
	int x,y;
	cin>>n;
	for(int i=1;i<=n;i++){
		scanf("%d",&weight[i]);
		dp[i]=weight[i];
	}
	for(int i=1;i<n;i++){
		cin>>x>>y;
		Add(x,y);
		Add(y,x);
	}
	memset(book,0,sizeof(book));
	book[1]=1;
	dfs(1);
	cout<<max_weight<<endl;
	return 0;
}
總結: 15年省賽最後倆題都是動態規劃,備戰多看看dp





相關推薦

藍橋測試1->2015藍橋

1.StringInGrid函式會在一個指定大小的格子中列印指定的字串。 要求字串在水平、垂直兩個方向上都居中。 如果字串太長,就截斷。 如果不能恰好居中,可以稍稍偏左或者偏上一點。 下面的程式實現這個邏輯,請填寫劃線部分缺少的程式碼。 #include <s

2015藍橋C/C++程序設計本科B組決賽 ——居民集會(編程大題)

con 要求 數據 color 資源 例如 aps 計算 調試 標題:居民集會 藍橋村的居民都生活在一條公路的邊上,公路的長度為L,每戶家庭的 位置都用這戶家庭到公路的起點的距離來計算,第i戶家庭距起點的距 離為di。每年,藍橋村都要舉行一次集會。今年,由於村裏的人口太多,

2015藍橋JavaB組決賽題解——穿越雷區

標題:穿越雷區 X星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。 某坦克需要從A區到B區去(A,B區本身是安全區,沒有正能量或負能量特徵),怎樣走才能路徑最短? 已知的地圖是一個方陣,上面用字母標出了A,B區,其它區都標了正號或

2015藍橋C/C++程式設計本科B組-星系炸彈(結果填空)

#include <iostream> using namespace std; int isYear(int year) { if(year%4==0&&year%100!=0||year%400==0)) return 1; else

2015藍橋試題(C/C++本科B組)

1 有些人很迷信數字,比如帶“4”的數字,認為和“死”諧音,就覺得不吉利。雖然這些說法純屬無稽之談,但有時還要迎合大眾的需求。某抽獎活動的獎券號碼是5位數(10-99),要求其中不要出現帶“4”的號碼,主辦單位請你計算一下,如果任何兩張獎券不重號,最多可發出獎券多少張。 請

2015藍橋本科B組C++個人題解

比賽結束已經一星期了,成績也出來了,江蘇非211組的省前十,但是深感自己還是有太多的不足。絕對不能以自己還只是大一為藉口,acm這條路還長的很。 目測得了95分(滿分150),第一題錯了,程式碼填空第一題錯了,倒數第二題扣了一點分,最後一道大題全錯。 之所以會這麼

2015藍橋C/C++程式設計本科B組決賽 密文搜尋(程式設計大題)

2015年第六屆藍橋杯C/C++程式設計本科B組決賽題目彙總: 密文搜尋 福爾摩斯從X星收到一份資料,全部是小寫字母組成。 他的助手提供了另一份資料:許多長度為8的密碼列表。 福爾摩斯發現,這些

藍橋 穿越雷區 2015藍橋JavaB組決賽四題

標題:穿越雷區 X星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。 某坦克需要從A區到B區去(A,B區本身是安全區,沒有正能量或負能量特徵),怎樣走才能路徑最短? 已知的地圖是一個方陣,上面用字母標出了A,B區,其它區都標了正號

2015藍橋(C/C++ B組)解題報告

第1題:統計不含4的數字 題目大意   統計10000至99999中,不包含4的數值個數。 題解   (@『落』常笑鷹 提供)直接推匯出數學公式   最高位除了0、4不能使用,其餘8個數字(1,2,3,5,6,7,8,9)均能使用,剩下的四位(

2015藍橋C/C++程式設計本科B組 移動距離(程式設計大題)

2015年第六屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 移動距離 X星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3... 當排滿一行時,從下一行相鄰的樓往反方

2015藍橋A組(C/C++)

部分轉載自:http://blog.csdn.net/summonlight/article/details/61920048還有:https://zhidao.baidu.com/question/310414478.html1. 方程整數解方程: a^2 + b^2 +

2015藍橋C/C++程式設計本科B組-三羊獻瑞

三羊獻瑞(結果填空)  觀察下面的加法算式:        祥 瑞生 輝  +    三羊 獻 瑞 -------------------  三 羊 生 瑞 氣 其中,相同的漢字代表相同的數字,不同的漢字代表不同的數字。 請你填寫“三羊獻瑞”所代表的4位數字(答案唯一),不

【暴力自動生成排列】(2015藍橋 C/C++ B組 題解(三題)

第三題題目三羊獻瑞觀察下面的加法算式:       祥 瑞 生 輝  +   三 羊 獻 瑞-------------------   三 羊 生 瑞 氣(如果有對齊問題,可以參看【圖1.jpg】)其中

藍橋 表格計算 2016藍橋javaB組決賽五題

標題:表格計算 某次無聊中, atm 發現了一個很老的程式。這個程式的功能類似於 Excel ,它對一個表格進行操作。 不妨設表格有 n 行,每行有 m 個格子。 每個格子的內容可以是一個正整數,也可以是一個公式。 公式包括三種: 1. SUM(x1,y1:x2,y2)

&quot;浪潮&quot;ACM山東省山科場總結

stl 努力 自己 遍歷 mail 每一個 英語 -a 成對 從空間拷過來的。盡管已經過去一個月了。記憶猶新 也算是又一次拾起這個blog Just begin 看著一群群大牛還有隊友男神的省賽總結都出了 我最終也耐不住寂寞 來做個流水賬抒抒情好了 第一

20154月藍橋c/c++B組試題和個人解答

又一年的藍橋杯,好久沒那麼爽快的做題了,昨天上午剛考完藍橋杯,我把題帶出來了。不廢話,上題。      一、 獎券數目 有些人很迷信數字,比如帶“4”的數字,認為和“死”諧音,就覺得不吉利。 雖然這些說法純屬無稽之談,但有時還要迎合大眾的需求。某抽獎活動的獎券號碼是5位數(

2015藍橋決賽c/c++本科B組試題總結及解題答案

1. 積分之迷 小明開了個網上商店,賣風鈴。共有3個品牌:A,B,C。 為了促銷,每件商品都會返固定的積分。 小明開業第一天收到了三筆訂單:  第一筆:3個A + 7個B + 1個C,共返積分:315  第二筆:4個A + 10個B + 1個C,共返積分:420 

2015藍橋全國軟體大賽(預賽)總結

這是我上大學以來第一次自發的寫總結,這也許意味著我對大學的看法和接下來的大學生活都將有所改變吧。首先說說引導我寫這篇總結的“人物”吧,RUI,從大一開始便是同學,直到大三成為了舍友。他的成績一直很好,如果沒記錯的話,大一專業第一名,大二好像也是第一第二的,總之在班裡一直名列

藍橋2015本科B組c/++部分解題報告

今天是2015年4月11日,昨天剛從hz趕回來,好久不寫程式碼,手感有些生疏,~~ 一、獎券數目(3分) 有些人很迷信數字,比如帶“4”的數字,認為和“死”諧音,就覺得不吉利。 雖然這些說法純屬無稽之談,但有時還要迎合大眾的需求。某抽獎活動的獎券號碼是5位數(10000-9

2015藍橋C++B組七題:牌型種數

題目: 牌型種數 小明被劫持到X賭城,被迫與其他3人玩牌。 一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。 這時,小明腦子裡突然冒出一個問題: 如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合