1. 程式人生 > >第七屆藍橋杯C++B組 四平方和

第七屆藍橋杯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[] 中既是每個國家可以派出的最多的名額。