1. 程式人生 > >XTU1255 勾股數

XTU1255 勾股數

題目描述

勾股數是指滿足a^2+b^2=c^2的正整數,比如最有名的“勾三股四弦五”。

現在給你兩個正整數,請問是否存在另外一個正整數,使其成為“勾股數”?
輸入:
第一行是一個整數K,表示樣例的個數。 以後每行一個樣例,為兩個整數x,y,(1≤x,y≤10000)
輸出: 
每行輸出一個樣例的結果。如果不能構成勾股數,輸出“None”,如果存在多個,輸出最小的那個。
樣例輸入

3 4 
2 6 
12 13
樣例輸出

None 

5

解題思路

暴力列舉,根據三角形的構成條件|a-b|<c<a+b,依次列舉這個區間內的C,看是否和a,b構成勾股定理。

AC程式碼如下:

#include<stdio.h>
int main(){
	int k;
	scanf("%d",&k);
	while(k--){
		int x,y;
		int x1,y1;
		scanf("%d%d",&x,&y);
		if(x>y){
			x1=x;
			y1=y;
		}
		else {
			x1=y;
			y1=x;
		}
		int a=x1-y1,b=x1+y1;
		int flag=0;
		int result;
		for(int i=a+1;i<b;i++){
			if(x1*x1+y1*y1==i*i||x1*x1-y1*y1==i*i) {
			flag=1;
			result=i;
			break;
			}
		}
		if(flag==1) printf("%d\n",result);
		else printf("None\n");
		
	}
	return 0;
} 
 


相關推薦

XTU1255 股數

題目描述 勾股數是指滿足a^2+b^2=c^2的正整數,比如最有名的“勾三股四弦五”。 現在給你兩個正整數,請問是否存在另外一個正整數,使其成為“勾股數”?輸入: 第一行是一個整數K,表示樣例的個數。

如何構造股數

至少 大於 自然 如何 需要 觀察 自然數 就是 判斷 這裏貼一下勾股數的構造:   當a為大於1的奇數2n+1時,b=2n2+2n, c=2n2+2n+1。   實際上就是把a的平方數拆成兩個連續自然數,例如:   n=1時(a,b,c)=(3,4,5)   n=2時(a

HDU 6441 費馬大定理+股數

code == aid sizeof html end deb using mes #include <bits/stdc++.h> #define pb push_back #define mp make_pair #define fi first #def

第五章(5) 數值範圍及數值流綜合使用案例----獲取股數股數

1.產生一個數值範圍        和數字打交道時,有一個常用的東西就是數值範圍。比如,假設你想要生成1和100之間的所有數字。Java 8引入了兩個可以用於IntStream和LongStream的靜態方法,幫助生成這種範圍:range和rangeC

C語言求股數程式碼及解析

問題描述 求150以內的所有勾股數。所謂勾股數,是指能夠構成直角三角形三條邊的三個正整數(a,b,c)。 問題分析 根據“勾股數”定義,所求三角形三邊應滿足條件 a2 + b2 = c2。可以在所求範圍內利用窮舉法找出滿足條件的數。 演算法分析 採用窮舉法求解時,最容易想到的一種方法是利用3個迴圈語

python:求整數num範圍內的股數,並統計a,b,c三個元素互為質數的股數的數量

def gcd(m,n): # 求兩個數的最大公約數,若為1則互為質數,返回TRUE if n== 0: m,n = n,m while m !=0: m,n = n%m, m if n == 1:

股數 (迅雷筆試題)

描述 勾股數,是由三個正整陣列成的陣列;能符合勾股定理 aa + bb = c*c , (a, b, c) 的正整數解。如果 (a, b, c) 是勾股數,它們的正整數倍數,也是勾股數。如果 (a,

XTU-OJ-迴圈2-股數

Description 勾股數 題目描述 勾股數是指滿足a2+b2=c2的正整數,比如最有名的“勾三股四弦五”。 現在給你兩個正整數,請問是否存在另外一個正整數,使其成為“勾股數”? 輸入 第一行是一個整數K,表示樣例的個數。 以後每行一個樣例,為兩個整數x,y

藍橋杯:股數

題目描述 勾股數是一組三個自然數,a  <   b  <   c,以這三個數為三角形的三條邊能夠形成一個直角三角形  輸出所有a  +  b  +  c  < =  1000的勾股數  a小的先輸出;a相同的,b小的先輸出。  輸入 無 輸出 每行

【ShawnZhang】帶你看藍橋杯——演算法提高 股數

本道題非常的簡單,主要的問題就是三條邊的條件控制上 for(;a<500;a++){ for(b=a;b<500;b++){ for(c=5;c<500;c++){………………

hdu 6441 Find Integer(費馬大定理+股數)

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=6441(本題來源於2018年中國大學生程式設計競賽網路選拔賽) 題意:輸入n和a,求滿足等式a^n+b^n=c^n的b,c的值 思路: 首先我們要知道什麼是費馬大定理 百度詞條 費馬大定理,又被稱

一個數的(股數)組

main clu long long spa contest namespace pre ref lse 大概 一開始還以為是勾股 的數組呢、、 題目-->codeforces 求一個數所在的任意勾股數組 算了,不胡扯扯了,還是看原博客吧 應該是中國人寫的,翻譯友好

hdu6441 Find Integer股數

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1666    Accepted Submission(s): 5

使用Python求取前100組股數

      本來想採用窮舉試探的方式來做這個演算法,後來發現還是有點麻煩。從網路上找來了一種求解方法如下:       當a為大於1的奇數2n+1時,b=2n^2+2n,c=2n^2+2n+1。實際上就是把a的平方數拆成兩個連續自然數。       編寫程式碼如下: #!/

UVA106- Fermat vs. Pythagoras(素股數

題意:給你一個n,讓你找出一些勾股陣列,a^2+b^2=c^2 , 需要滿足a<b<c<=n 。 對於每個case題目首先需要你輸出這些勾股陣列中素勾股數T的個數,然後再輸出一個數字,這個數字是n-所有勾股陣列用掉的數字個數 思路:本題就是要求在n範圍內的

C語言之基本演算法19—列舉股數

/* ================================================================== 題目:求100內的勾股數! =====================================================

PE 233 Lattice points on a circle (數論:畢格拉斯三元組(股數))

Lattice points on a circle Problem 233 Let f(N) be the number of points with integer coordinates that are on a circle passing thr

股數的一些性質

定義1 如果正整數a,b,c能滿足不定方程a2+b2=c2,則它們叫一組勾股數,用[a,b,c]表示。 定義2 如果[a,b,c]為一勾股陣列,且(a,b)=1,則[a,b,c]叫一個勾股數的

MT【315】股數

背景 com 似的 方程 高考 -a left http 數列 (高考壓軸題)證明以下命題:(1)對任意正整數$a$都存在正整數$b,c(b<c)$,使得$a^2,b^2,c^2$成等差數列.(2)存在無窮多個互不相似的三角形$\Delta_n$,其邊長$a_n,b_

股數專題-SCAU-1079 三角形-18203 神奇的股數(原創)

  勾股數專題-SCAU-1079 三角形-18203 神奇的勾股數(原創) 大部分的勾股數的題目很多人都是用for來便利,然後判斷是不是平方數什麼什麼的,這樣做的時候要對變數型別和很多細節都是要掌握好的,但是有沒有一種方法就是輸入一個數然後用數學的方法就可以吧答案(也就是另外兩個勾股數求出來的方