題目:
和是2組不同的等差三元組,除了等差的性質之外,還有個奇妙的地方在於:5^2 – 3^2 – 1^2 = 7^2 – 5^2 – 3^2 = n = 15。 同這對三元組也存在同樣的性質:19^2 – 15^2 – 11^2 = 7^2 – 5^2 – 3^2 = n = 15。 這種成對的三元組還有很多。當n = 15時,有3對,分別是和,和,和。 現給出乙個區間 [a,b]求a <= n <= b 範圍內,共有多少對這樣的三元組。(1 <= a <= b <= 5*10^6) 例如:a = 1,b = 30,輸出:4。(注:共有4對,和,和,和,和)
思考:由題意,設乙個三無組中間數為x,公差為d,
則有:(x+d)^2-x^2-(x-d)^2=n;a<=n<=b;
由上式展開可得:x(4d-x)=n;且x>d>0(因為x-d>0,d必大於0,因為d=0時,無意義);
那麼是否可這樣做:
1、建立1個int型的(b-a+1)大小的陣列arr,用來放置n值相等的三元組的個數,初始化全部為0;
2、從d=1、x=2開始統計n【n=x(4d-x)】值,若a<=n<=b,則相對應的陣列arr[n]值加1(其中1
3、步驟2完後,對陣列arr的每個大於等於2的元素用組合的方法計算【如c(n,2)】,最後把每個求得的值相加即為所求。
上述為我的解法,xcode上通達,但在龐果網上提交沒給成功,是不是我哪有什麼問題,求大神提點,謝謝!
#include #include int num(int a,int b)
for(i=0;i<(b-a+1);i++)
free(arr);
return count;
}int main(int argc, const char * argv)
完美三元組
問題 定義完美三元組,a,b,d a是d的倍數,b是d的倍數,且a b d 1 輸入 t組測試資料,第一行乙個t 1 t 10000 之後t行每行兩個整數l,r,表示三元組中a 的取值區間 l,r 在此條件下,求滿足的完美三元組的總數 1 l r 100000 輸出 乙個整數。分析 首先,a的值已經...
遞增三元組
遞增三元組 描述給定三個整數陣列a a1,a2,an b b1,b2,bn c c1,c2,cn 請你統計有多少個三元組 i,j,k 滿足 1 i,j,k n ai bj ck 輸入第一行包含乙個整數n。第二行包含n個整數a1,a2,an。第三行包含n個整數b1,b2,bn。第四行包含n個整數c1,...
遞增三元組
給定三個整數陣列 a a1,a2,an b b1,b2,bn c c1,c2,cn 請你統計有多少個三元組 i,j,k 滿足 1.1 i,j,k n 2.ai bj ck 輸入格式 第一行包含乙個整數n。第二行包含n個整數a1,a2,an。第三行包含n個整數b1,b2,bn。第四行包含n個整數c1,...