C++ 给定数字的其他2个毕达哥拉斯三胞胎
因此,我最近尝试了一个问题并编写了一些代码,但我无法在5个测试用例中通过3个以上的测试。 问题是:给定一个数字N(表示三角形的一个支腿),按递增顺序打印其毕达哥拉斯对(如果存在)。否则,请打印“-1” 输入格式 单整数N 约束 N>N;C++ 给定数字的其他2个毕达哥拉斯三胞胎,c++,C++,因此,我最近尝试了一个问题并编写了一些代码,但我无法在5个测试用例中通过3个以上的测试。 问题是:给定一个数字N(表示三角形的一个支腿),按递增顺序打印其毕达哥拉斯对(如果存在)。否则,请打印“-1” 输入格式 单整数N 约束 N>N; 如果(n>=0&&n您可以解决一些问题 应修改链接的ifs(如注释中所述,最后一个cout>n){ 如果(n直角三角形的支腿是两条相交以确定直角的边,则剩余的边称为斜边。因此,我们必须打印除输入和斜边之外的一条剩余支腿 解决方案方法: #include&
如果(n>=0&&n您可以解决一些问题
- 应修改链接的
s(如注释中所述,最后一个if
cout>n){
如果(n直角三角形的支腿是两条相交以确定直角的边,则剩余的边称为斜边。因此,我们必须打印除输入和斜边之外的一条剩余支腿 解决方案方法:
如果m>n>0是整数,那么(m2-n2,2mn,m2+n2)是勾股三元组。这很容易用一点代数来理解。因此,插入不同的(m,n)将得到不同的三元组。 现在,我们的目标是找到一个三重形式(M2-N2,2Mn,M2+N2),其中我们的输入值是CATHETI(腿)之一。注意,CATITI是M2-N2和2Mn。同时,注意到第二个CythEt始终是偶数的。因此,考虑两种情况是有意义的: 如果a是偶数,那么让我们试着将它与第二个凯瑟图,2mn相等,也就是说,让我们试着找到一个(m,n)对,这样2mn=a。在这种情况下,是偶数,所以我们可以除以2。我们有mn=a/2。因此,我们所要做的就是找到a/2到mn的因式分解,这样m>n。你可以尝试各种因式分解方法——甚至是天真的O(√a) 时间方法会过去-但在这种情况下,我们甚至不需要这样做,因为平凡的(m,n)=(a/2,1)是有效的!这给了我们三重解((a^2)/4-1,a,(a^2)/4+1)。注意,(a^2)/4是一个整数,因为a是偶数 如果a是奇数,那么我们不能将它与第二个cathetus相等,那么让我们尝试m2-n2,也就是说,我们想找到一个(m,n),这样m2-n2=a。节点m2-n2=(m+n)(m-n),那么所有的都可以归结为分解!让我们再次尝试我们的平凡分解:(m+n,m-n)=(a,1)我们得到的是一个由两个线性方程组组成的系统:m+n=a和m-n=1,其解为m=(a+1)/2和n=(a-1)/2。反过来,我们得到了三重(a,(a^2-1)/2,(a^2+1)/2)。注意,(a^2+1)/2是一个整数,因为a是奇数#include<iostream> #include<cmath> using namespace std; int main() { int n; cin>>n; if(n>=0 && n<=2){ cout<<"-1"<<endl; } else if (n%2==0){ cout<<pow((n/2),2)-1<<" "<<pow((n/2),2)+1<<endl; } else if (n%2==1){ cout<< 2*((n-1)/2)*((n+1)/2) <<" "<<pow((n+1)/2,2) + pow((n-1)/2,2)<<endl; } else{ cout<<"-1"<<endl; } return 0; }
int main() { long long n; cin>>n; if (n<=2) cout<<"-1"; else if (n % 2 == 0) { // Calculating for even case long long var = 1 * n * n / 4; cout<<var - 1<<" "; cout<<var + 1; } else if (n % 2 != 0) { //Calculating for odd case long long var = 1 * n * n + 1; cout<<var / 2 - 1<<" "; cout<<var / 2; } return 0; }
intmain() { 长n; cin>>n;
如果(nA)毕达哥拉斯三元组由整数组成。
生成一个浮点数。一个好的第一步是编写一个整数平方函数……如果使用一组已知的三元组,应该能够找到它的故障点。可以使用开始测试。最终pow
永远无法到达。。。否则
int main() { long long n; cin>>n; if (n<=2) cout<<"-1"; else if (n % 2 == 0) { // Calculating for even case long long var = 1 * n * n / 4; cout<<var - 1<<" "; cout<<var + 1; } else if (n % 2 != 0) { //Calculating for odd case long long var = 1 * n * n + 1; cout<<var / 2 - 1<<" "; cout<<var / 2; } return 0; }