第七屆藍橋杯省賽A組
第一題:
煤球數目
有一堆煤球,堆成三角稜錐形。具體:
第一層放1個,
第二層3個(排列成三角形),
第三層6個(排列成三角形),
第四層10個(排列成三角形),
....
如果一共有100層,共有多少個煤球?
請填表示煤球總數目的數字。
注意:你提交的應該是一個整數,不要填寫任何多餘的內容或說明性文字
找規律的題,注意1+2+3+4這樣每層的由來
#include<cstdio> #include<iostream> using namespace std; int main(){ int a,b; int sum=0; int num=0; for(int i=1;i<=100;i++){ num=num+i;//1+2+3+4這樣的規律 sum=sum+num; } cout<<sum; }
第二題:
生日蠟燭
某君從某年開始每年都舉辦一次生日party,並且每次都要吹熄與年齡相同根數的蠟燭。
現在算起來,他一共吹熄了236根蠟燭。
請問,他從多少歲開始過生日party的?
請填寫他開始過生日party的年齡數。
注意:你提交的應該是一個整數,不要填寫任何多餘的內容或說明性文字。
直接暴力,先for第一次出生的日子,再for一個結束的日子,最裡面計算開始到結束經歷的總天數
#include<cstdio> #include<iostream> using namespace std; int main(){ int flag=0; for(int i=0;i<236&&(flag==0);i++){ for(int j=i;j<236&&(flag==0);j++){ int sum=0; for(int k=i;k<=j;k++) sum=sum+k; if(sum==236) cout<<i; } } }
湊算式
B DEF
A + — + -——— = 10
C GHI
(如果顯示有問題,可以參見【圖1.jpg】)
這個算式中A~I代表1~9的數字,不同的字母代表不同的數字。
比如:
6+8/3+952/714 就是一種解法,
5+3/1+972/486 是另一種解法。
這個算式一共有多少種解法?
注意:你提交應該是個整數,不要填寫任何多餘的內容或說明性文字。
next_permutation的應用,如果沒有它,則需要寫一個製造1-9全排列的函式
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int main(){ int sum=0; double b[10]={1,2,3,4,5,6,7,8,9}; do{ if(10==b[0]+b[1]/b[2]+(b[3]*100+b[4]*10+b[5])/(b[6]*100+b[7]*10+b[8])) sum++; }while(next_permutation(b,b+9)); cout<<sum; }
第六題:
方格填數
如下的10個格子
(如果顯示有問題,也可以參看【圖1.jpg】)
填入0~9的數字。要求:連續的兩個數字不能相鄰。
(左右、上下、對角都算相鄰)
一共有多少種可能的填數方案?
請填寫表示方案數目的整數。
注意:你提交的應該是一個整數,不要填寫任何多餘的內容或說明性文字。
標記即可,深搜加標記,對每個位置用陣列來表示
#include <stdio.h>
#include<math.h>
#include<iostream>
using namespace std;
int a[11],vis[11];
int count;
void dfs(int x)
{
if(x>10)//所有方格填數完畢
{
if(abs(a[1]-a[2])>1 && abs(a[1]-a[4])>1 && abs(a[1]-a[5])>1 && abs(a[1]-a[6])>1 &&
abs(a[2]-a[3])>1 && abs(a[2]-a[5])>1 && abs(a[2]-a[6])>1 && abs(a[2]-a[7])>1 &&
abs(a[3]-a[6])>1 && abs(a[3]-a[7])>1 &&
abs(a[4]-a[5])>1 && abs(a[4]-a[8])>1 && abs(a[4]-a[9])>1 &&
abs(a[5]-a[6])>1 && abs(a[5]-a[8])>1 && abs(a[5]-a[9])>1 && abs(a[5]-a[10])>1 &&
abs(a[6]-a[7])>1 && abs(a[6]-a[9])>1 && abs(a[6]-a[10])>1 &&
abs(a[7]-a[10])>1 &&
abs(a[8]-a[9])>1 &&
abs(a[9]-a[10])>1)
{
//輸出每種情況
// for(int i=1;i<=10;i++)
// printf("%d ",a[i]);
// printf("\n");
count++;
}
}
for(int i=0;i<=9;i++)
if(vis[i]==0)
{
vis[i]=1;//將用過的數標記
a[x]=i;//填數
dfs(x+1);//對下一個方格繼續填數
vis[i]=0;//清除標記
}
}
int main()
{
count=0;
dfs(1);
cout<<count;
return 0;
}
7.
剪郵票
如【圖1.jpg】, 有12張連在一起的12生肖的郵票。
現在你要從中剪下5張來,要求必須是連著的。
(僅僅連線一個角不算相連)
比如,【圖2.jpg】,【圖3.jpg】中,粉紅色所示部分就是合格的剪取。
請你計算,一共有多少種不同的剪取方法。
請填寫表示方案數目的整數。
注意:你提交的應該是一個整數,不要填寫任何多餘的內容或說明性文字。
//列舉5個點,然後dfs判斷聯通性
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int cnt,dir[5]={-4,1,-1,4},a,b,c,d,e,vis[20];
void dfs(int i){
if(cnt<5)
for(int j=0;j<4;j++)
{
if((i==4||i==8)&&dir[j]==1) continue;//這個一開始忘了
if((i==5||i==9)&&dir[j]==-1) continue;
int t=i+dir[j];
if(cnt<5&&t>0&&t<13&&!vis[t]&&(t==b||t==c||t==d||t==e))
{
vis[t]=1;
cnt++;
dfs(t);
}
}
}
int main(){
int ans=0;
for(a=1;a<=12-4;a++)
for(b=a+1;b<=12-3;b++)
for(c=b+1;c<=12-2;c++)
for(d=c+1;d<=12-1;d++)
for(e=d+1;e<=12;e++)
{
memset(vis,0,sizeof(vis));
cnt=1;
dfs(a);
if(cnt==5) ans++;
}
cout<<ans;
}
8.
四平方和
四平方和定理,又稱為拉格朗日定理:
每個正整數都可以表示為至多4個正整數的平方和。
如果把0包括進去,就正好可以表示為4個數的平方和。
比如:
5 = 0^2 + 0^2 + 1^2 + 2^2
7 = 1^2 + 1^2 + 1^2 + 2^2
(^符號表示乘方的意思)
對於一個給定的正整數,可能存在多種平方和的表示法。
要求你對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
資源約定:
峰值記憶體消耗 < 256M
CPU消耗 < 3000ms
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int main(){
double max,n,d;
int flag=0;
cin>>max;
n=sqrt(max);
int a,b,c;
for(a=0;a<n;a++){
for(b=0;b<n;b++){
for(c=0;c<n;c++){
d=sqrt(max-a*a-b*b-c*c);
if(d==(int)d){//一定這兩個是相等的,取整和未取整的數是相等的
flag=1;
}
if(flag==1)
break;
}
if(flag==1)
break;
}
if(flag==1)
break;
}
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
}
這些就是目前我能解決的題啦,革命尚未成功,同志仍需努力
相關推薦
2016年第七屆藍橋杯省賽A組試題
2016年第七屆藍橋杯省賽(C/C++) A組試題及參考答案 第七屆藍橋杯省賽結束了,趁著還有點印象,趕緊把答案記一下。 歡迎加入à程式設計學習交流QQ群:23228338,一起交流藍橋杯答案及程式設計交流學習。群檔案有答案下載 1.父親和兒子(列舉) 父親的年齡兩個數字
第七屆藍橋杯省賽A組
第一題:煤球數目有一堆煤球,堆成三角稜錐形。具體:第一層放1個,第二層3個(排列成三角形),第三層6個(排列成三角形),第四層10個(排列成三角形),....如果一共有100層,共有多少個煤球?請填
2016第七屆藍橋杯省賽C組試題及部分答案
答案都是自己理解的 1.報紙頁數 X星球日報和我們地球的城市早報是一樣的,都是一些單獨的紙張疊在一起而已。每張紙印有4版。比如,某張報紙包含的4頁是:5,6,11,12,可以確定它應該是最上邊的第2張報紙。我們在太空中撿到了一張X星球的報紙,4個頁碼分別是: 1125,11
第七屆藍橋杯 省賽 JavaB組 生日蠟燭
某君從某年開始每年都舉辦一次生日party,並且每次都要吹熄與年齡相同根數的蠟燭。 現在算起來,他一共吹熄了236根蠟燭。 請問,他從多少歲開始過生日party的? 請填寫他開始過生日party的年齡
第七屆藍橋杯 省賽 JavaB組 分小組
9名運動員參加比賽,需要分3組進行預賽。 有哪些分組的方案呢? 我們標記運動員為 A,B,C,... I 下面的程式列出了所有的分組方法。 該程式的正常輸出為: ABC DEF GHI ABC DEG FHI ABC DEH FGI ABC DEI FGH ABC DFG
2015年第六屆藍橋杯省賽A組(C/C++)
部分轉載自:http://blog.csdn.net/summonlight/article/details/61920048還有:https://zhidao.baidu.com/question/310414478.html1. 方程整數解方程: a^2 + b^2 +
第七屆藍橋杯C/C++ A組省賽題解
1.網友年齡某君新認識一網友。當問及年齡時,他的網友說:“我的年齡是個2位數,我比兒子大27歲,如果把我的年齡的兩位數字交換位置,剛好就是我兒子的年齡”請你計算:網友的年齡一共有多少種可能情況?提示:30歲就是其中一種可能哦.請填寫表示可能情況的種數。注意:你提交的應該是一個
【DFS填數】(2016)第七屆藍橋杯省賽 C/C++ A組 題解(第三題)
第三題 題目 如圖,如下的10個格子,填入0~9的數字。要求:連續的兩個數字不能相鄰。 (左右、上下、對角都算相鄰)一共有多少種可能的填數方案? 請填寫表示方案數目的整數。思路分析
2016年第七屆藍橋杯省賽(C/C++ A組)
此處有目錄↑ 基本都是暴力搜尋解決,最後兩道演算法題不會 - - 1.父親和兒子 (列舉) 父親年齡是兩位數,且比兒子大27歲,問有多少種可能的情況?(父親30歲,兒子3歲也符合題意) 直接列舉父親年齡即可 答案是:7 #include <cstdio
2016年第七屆藍橋杯省賽C /C++ A組 1~8題題解
部分轉載自:http://blog.csdn.net/idealism_xxm/article/details/50937688還有:http://blog.csdn.net/summonlight/article/details/61427968題目連線:http://ww
第七屆藍橋杯省賽C/C++B組賽題及答案
part 實現 void 整數 三層 在一起 idt mage 算法; 第一題 【題目】 煤球數目 有一堆煤球,堆成三角棱錐形。具體:第一層放1個,第二層3個(排列成三角形),第三層6個(排列成三角形),第四層10個(排列成三角形),....如果一共有100層,共有多少個煤
第七屆藍橋杯省賽 Java 平方怪圈
平方怪圈 如果把一個正整數的每一位都平方後再求和,得到一個新的正整數。 對新產生的正整數再做同樣的處理。 如此一來,你會發現,不管開始取的是什麼數字, 最終如果不是落入1,就是落入同一個迴圈圈。 請寫出這個迴圈圈中最大的那個數字。 請填寫該最大數字。 注意:你提
第七屆藍橋杯省賽試題1 煤球數目(遞推)
import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=100; long sum=0;
2016第七屆藍橋杯省賽c/c++本科B組試題總結及解題答案
第一題:煤球數目第i層的煤球陣列為(1+n)*n/2,答案:171700第二題:生日蠟燭思路:1 2 3 4 5 6……這一個等差數列的前n項和為(1+n)*n/2設從a歲開始過生日,到了b歲一共吹熄了236根蠟燭。即為:(a+b)(b-a+1)/2=236,答案:26for
第七屆藍橋杯省賽Java語言C組_小題答案
1:58497 2:171700 3:145 4:i + j+2 == k+1 || i + k+2 == j+1 || k + j+2 == i+1 5:s + " " + (char) (i
藍橋杯:2017年第八屆藍橋杯省賽B組第十題—PREV-40K倍區間
膜拜這位大佬 做法:首先統計字首和sum[i] 表示A1+A2+…+Ai.所以對於任意一段區間[l,r]的和就是sum[r]-sum[l-1].如果要保證這個區間和為K倍數就是:(sum[r]-sum[l-1])%k == 0.變形後就是:sum[r]%k==sum[l-1]%k,
第八屆藍橋杯省賽javaB組題目解析
作者自己做完之後發現省賽的一幕其實是不難的,說實話,自己覺得題目難度還沒有PAT甲級的難度高。 而且作者做了這麼些天之後發現了,PAT甲級主要喜歡考資料結構方面的知識,而藍橋杯則喜歡考演算法這一類的,但是藍橋杯的演算法題目有些又不是很正規,因為作者有好些題目都是
第五屆藍橋杯省賽JavaB組第五題圓周率
標題:圓周率 數學發展歷史上,圓周率的計算曾有許多有趣甚至是傳奇的故事。其中許多方法都涉及無窮級數。 圖1.png中所示,就是一種用連分數的形式表示的圓周率求法。 下面的程式實現了該求
第五屆藍橋杯省賽JavaB組第六題奇怪的分式
標題:奇怪的分式 上小學的時候,小明經常自己發明新演算法。一次,老師出的題目是: 1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (參見圖1.pn
2017第八屆藍橋杯省賽Java A組--迷宮
標題:迷宮X星球的一處迷宮遊樂場建在某個小山坡上。它是由10x10相互連通的小房間組成的。房間的地板上寫著一個很大的字母。我們假設玩家是面朝上坡的方向站立,則:L表示走到左邊的房間,R表示走到右邊的房間,U表示走到上坡方向的房間,D表示走到下坡方向的房間。X星球的居民有點懶,