首页 > 代码库 > SDUT OJ 2862 勾股定理
SDUT OJ 2862 勾股定理
#include<iostream> using namespace std; int a[1010]; void qsort(int a[],int l,int r) { int x=a[l],i=l,j=r; if(l>=r) return ; while(i<j) { while(i<j&&a[j]>=x) j--; a[i]=a[j]; while(i<j&&a[i]<=x) i++; a[j]=a[i]; } a[i]=x; qsort(a,l,i-1); qsort(a,i+1,r); } int main() { int n,i,m,ans,j,k; cin>>n; while(n--) { cin>>m; for(i=0;i<m;i++) cin>>a[i]; for(i=0;i<m;i++) a[i]=a[i]*a[i]; qsort(a,0,m-1); ans = 0 ; for(i = 0 ; i < m ; i++) { for(j = i+1 ; j < m ; j++) { k = a[i]+ a[j] ; int low = 0 , mid , high = m-1 ; while(low <= high) { mid = (low + high) / 2 ; if( a[mid] == k ) break; else if( a[mid] < k ) low = mid + 1 ; else high = mid - 1 ; } if(a[mid] == k) ans++ ; } } cout<<ans<<endl; } return 0; }
SDUT OJ 2862 勾股定理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。