2023年藍橋杯

2021-10-04 12:31:29 字數 4001 閱讀 2193

四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為4個數的平方和。對於乙個給定的正整數,可能存在多種平方和的表示法。 要求你對4個數排序: 0 <= a <= b <= c <= d 並對所有的可能表示法按 a,b,c,d 為聯合主鍵公升序排列,最後輸出第乙個表示法。

程式輸入為乙個正整數n (n<5000000)

要求輸出4個非負整數,按從小到大排序,中間用空格分開

例如,輸入: 5

則程式應該輸出: 0 0 1 2

再例如,輸入: 12

則程式應該輸出: 0 2 2 2

再例如,輸入: 773535

則程式應該輸出: 1 1 267 838

1.巧妙列舉

2.雙重迴圈

#include

#include

#include

using

namespace std;

int n;

map<

int,

int>cache;

//對映

intmain()

}for

(int a=

0;a*a<=n/

4;a++)}

}}

每個方塊代表1~13中的某乙個數字,但不能重複。

比如:6 + 7 = 13

9 - 8 = 1

3 * 4 = 12

10 / 2 = 5

1.轉化為全排列加檢查

#include

using

namespace std;

int ans;

int a=

;bool

check()

//全排列

voidf(

int k)

for(

int i=k;i<

13;i++

)/* if((k==2&&a[0]+a[1]!=a[2])||(k==5&&a[3]-a[4]!=a[5]))

continue;}*/

f(k+1)

;}}int

main()

如下的10個格仔,填入0~9的數字。要求:連續的兩個數字不能相鄰。 (左右、上下、對角都算相鄰)一共有多少種可能的填數方案?

1.全排列加檢查

#include

//全排列+檢查

#include

using

namespace std;

int a[10]

=;int ans;

bool

check()

//考慮第k個位置一般從零開始

voidf(

int k)

//嘗試將位置i與位置k交換

for(

int i=k;i<

10;i++)f

(k+1);

}}intmain()

把空位補齊檢查

#include

#include

using

namespace std;

int a[5]

[6];

int vis[10]

;int ans;

bool

check

(int i,

int j,

int a[

6])}

return

true;}

voidf(

int x,

int y,

int a[

6])//從0到9抓乙個

for(

int i=

0;i<

10;i++

)vis[i]=1

;if(y==4)

//到達右界換行

f(x+1,

1,a)

;else

f(x,y+

1,a);}

}}inti()

}int

main()

有12張連在一起的12生肖的郵票。 現在你要從中剪下5張來,要求必須是連著的。 (僅僅連線乙個角不算相連)。請你計算,一共有多少種不同的剪取方法。請填寫表示方案數目的整數

1.全排列

2連通性檢測

#include

#include

#include

using

namespace std;

int a[12]

=;//轉化為一維排列

int ans;

void

dfs(

int g[

4],int i,

int j)

bool

check()

}//連通檢測

int cnt=0;

for(

int i=

0;i<

3;i++

)for

(int j=

0;j<

4;j++)if

(g[i]

[j]==1)

return cnt==1;

}/*void f(int k)

for(int i=k;i<12;i++)

f(k+1);

}}*/

intmain()

while

(next_permutation

(a,a+12)

);cout<

return0;

}

星球的考古學家發現了一批古代留下來的密碼。這些密碼是由a、b、c、d 四種植物的種子串成的序列。仔細分析發現,這些密碼串當初應該是前後對稱的(也就是我們說的映象串)。 由於年代久遠,其中許多種子脫落了,因而可能會失去映象的特徵。

你的任務是:

給定乙個現在看到的密碼串,計算一下從當初的狀態,它要至少脫落多少個種子,才可能會變成現在的樣子。輸入一行,表示現在看到的密碼串(長度不大於1000) 要求輸出乙個正整數,表示至少脫落了多少個種子。

例如,輸入: abcba

則程式應該輸出: 0

再例如,輸入: abdcdcbabc 則程式應該輸出: 3

1.深搜比較

2.時間較長

#include

#include

using

namespace std;

char s[

10000];

intdfs

(char

*s,int left,

int right,

int cnt)

intmain()

2。動歸

#include

#include

#include

using

namespace std;

char s[

10000];

char

*rev

(char

*s)//最長公共序列

void

lcs(

char

*s1,

char

*s2)

for(

int j=

0;j)for

(int i=

1;i)for

(int j=

1;jcout<

[len-1]

;//return dp[len-1][len-1];

}int

main()

2023年藍橋杯比賽心得

通過半年準備,終於結束了今年藍橋杯。比賽結果暫時還不知道,但是通過這幾個月的經歷,分享一些自己心得。我的情況 三本院校,藍橋杯c c b組,大二 3 做真題可能是個捷徑,適合於時間不多的時候,但如果你離比賽還有很久,那麼看幾本演算法競賽的書也是不錯的,那時候我們老師推薦的劉汝佳的 演算法競賽入門 高...

2023年藍橋杯c c B組

能力有限,此處只有本人會的題目呀 煤球數目 有一堆煤球,堆成三角稜錐形。具體 第一層放1個,第二層3個 排列成三角形 第三層6個 排列成三角形 第四層10個 排列成三角形 如果一共有100層,共有多少個煤球?請填表示煤球總數目的數字。注意 你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。...

藍橋杯 2023年 搭積木

題目 第三題 搭積木 題目描述 小明最近喜歡搭數字積木,一共有10塊積木,每個積木上有乙個數字,0 9。搭積木規則 每個積木放到其它兩個積木的上面,並且一定比下面的兩個積木數字小。最後搭成4層的金字塔形,必須用完所有的積木。下面是兩種合格的搭法 01 2 3 4 5 6 7 8 9 03 1 7 5...