第七屆藍橋杯C++B組 四平方和
四平方和定理,又稱為拉格朗日定理:
每個正整數都可以表示為至多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
請嚴格按要求輸出,不要畫蛇添足地列印類似:“請您輸入...” 的多餘內容。
所有程式碼放在同一個原始檔中,除錯通過後,拷貝提交該原始碼。
注意: main函式需要返回0
注意: 只使用ANSI C/ANSI C++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。
注意: 所有依賴的函式必須明確地在原始檔中 #include <xxx>, 不能通過工程設定而省略常用標頭檔案。
提交時,注意選擇所期望的編譯器型別。思路:第一反應是暴力,並不知道暴力會不會超時,然後寫了一個遞迴。程式碼:
#include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<string> #include<vector> #include<queue> #include<map> #include<set> using namespace std; int ans[4]={0}; int f(int num,int index) { if(num==0) { printf("%d %d %d %d\n",ans[0],ans[1],ans[2],ans[3]); exit(0); } if(num<0 || index>=4) { return; } for(int i=0;i<=sqrt(num);i++) { ans[index]=i; f(num-i*i,index+1); ans[index]=0; } } int main() { int n; cin>>n; f(n,0); return 0; }
相關推薦
第七屆藍橋杯C++B組 四平方和
四平方和四平方和定理,又稱為拉格朗日定理:每個正整數都可以表示為至多4個正整數的平方和。如果把0包括進去,就正好可以表示為4個數的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符號表示乘方的意思)對於一個
2016第七屆藍橋杯C++B組第八題:四平方和
題目: 四平方和 四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為4個數的平方和。 比如: 5 = 0^2 + 0^2
2015第六屆藍橋杯C++B組第七題:牌型種數
題目: 牌型種數 小明被劫持到X賭城,被迫與其他3人玩牌。 一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。 這時,小明腦子裡突然冒出一個問題: 如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合
第六屆藍橋杯C++B組 牌型種數
牌型種數小明被劫持到X賭城,被迫與其他3人玩牌。一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。這時,小明腦子裡突然冒出一個問題:如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?請填寫該整數,不要填寫任何多餘的內容或說明文字。
第七屆藍橋杯JAVA B組省賽-四平方和試題
四平方和 四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為4個數的平方和。 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 +
藍橋杯-第七屆藍橋杯java B組決賽
一、憤怒小鳥 X星球憤怒的小鳥喜歡撞火車! 一根平直的鐵軌上兩火車間相距 1000 米 兩火車 (不妨稱A和B) 以時速 10米/秒 相對行駛。 憤怒的小鳥從A車出發,時速50米/秒,撞向B車, 然後返回去撞A車,再返回去撞B車,如此往復.... 兩火車在相距1米處停車。
第七屆藍橋杯Java B組決賽試題
1.憤怒小鳥X星球憤怒的小鳥喜歡撞火車!一根平直的鐵軌上兩火車間相距 1000 米兩火車 (不妨稱A和B) 以時速 10米/秒 相對行駛。憤怒的小鳥從A車出發,時速50米/秒,撞向B車,然後返回去撞A車,再返回去撞B車,如此往復....兩火車在相距1米處停車。問:這期間憤怒的
第六屆藍橋杯C++B組——移動距離(曼哈頓距離)
X星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3… 當排滿一行時,從下一行相鄰的樓往反方向排號。 比如:當小區排號寬度為6時,開始情形如下: 1 2 3 4 5 6 12 11 10 9 8 7 13 14 1
第七屆藍橋杯java B組試題之分小組小題
9名運動員參加比賽,需要分3組進行預賽。 有哪些分組的方案呢? 我們標記運動員為 A,B,C,… I 下面的程式列出了所有的分組方法。 該程式的正常輸出為: ABC DEF GHI ABC DEG FHI ABC DEH FGI ABC DEI
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 四平方和(程式設計大題)
2016年第七屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 四平方和 四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為
2016第七屆藍橋杯C/C++ B組省賽題解 H題
四平方和 四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為4個數的平方和。 比如: 5 = 0^2 + 0^2 + 1^2 + 2
2016第七屆藍橋杯C/C++ B組省賽題解
前言: 已經是第二次參加藍翔杯了,又是凌晨四點半天還沒亮就要屁顛屁顛的起來。然後坐著學校大巴車來到成都理工。到了學校提前了2個小時啊。。。瞌睡來忙了沒地方睡。和一幫兄弟帶著三個大一的繞著理工逛了一圈,說實話,學校風景真不乍地。回到考場基本就要到比賽時間了。好了不多說了開始
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 生日蠟燭(結果填空)
2016年第七屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 生日蠟燭 某君從某年開始每年都舉辦一次生日party,並且每次都要吹熄與年齡相同根數的蠟燭。 現在算起來,他一共吹熄了236根蠟燭
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 剪郵票(結果填空)
2016年第七屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 剪郵票 如【圖1.jpg】, 有12張連在一起的12生肖的郵票。 現在你要從中剪下5張來,要求必須是連著的。 (僅僅連線一個角不
16年第七屆藍橋杯 c/c++ b組 題解
1. 煤球數目 答案:171700#include <cstdio> int N = 100, sum1 = 0; int solve(int x) { int sum2 = 0; for(int i=1; i<=x; i++) sum2 +=
2016第七屆藍橋杯C/C++ B組省賽第二題:生日蠟燭
/* 生日蠟燭 某君從某年開始每年都舉辦一次生日party,並且每次都要吹熄與年齡相同根數的蠟燭。 現在算起來,他一共吹熄了236根蠟燭。 請問,他從多少歲開始過生日party的? 請填寫他開始過生
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 煤球數目(結果填空)
煤球數目有一堆煤球,堆成三角稜錐形。具體:第一層放1個,第二層3個(排列成三角形),第三層6個(排列成三角形),第四層10個(排列成三角形),....如果一共有100層,共有多少個煤球?請填表示煤球總數
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 湊算式(結果填空) DFS
//A + B/C + DEF/GHI = 10 湊算式 標記一下1-9個數,再搜尋一下就好了#include <iostream> using namespace std; bool visited[10]; int ans[100]; int k = 0; i
煤球數目(2016年第七屆藍橋杯c/c++省賽B組(1題))
第一題 :煤球數目 題目敘述: 有一堆煤球,堆成三角稜錐形。具體: 第一層放1個, 第二層3個(排列成三角形), 第三層6個(排列成三角形), 第四層10個(排列成三角形), …. 如果
2016第七屆藍橋杯C/C++ B組省賽第五題:抽籤
/*抽籤 X星球要派出一個5人組成的觀察團前往W星。 其中: A國最多可以派出4人。 B國最多可以派出2人。 C國最多可以派出2人。 .... 那麼最終派往W星的觀察團會有多少種國別的不同組合呢? 下面的程式解決了這個問題。 陣列a[] 中既是每個國家可以派出的最多的名額。