?
查看原帖
?
1285950
4041nofoundGeoge楼主2024/5/24 21:01

?

#include<bits/stdc++.h>
using namespace std;
int a[1003],b[1003],c[1003];
/*
勾股数规律:(设三个数为a,b,c且a≤b≤c)
1.若a∈奇数,且为2n+1时:b=2n^2+2n,c=b+1
2.若a∈偶数,且为2n时:b=n^2-1,c=n^2+1
*/
void bl()
{
    int tmp = 1;
    for (int i = 3; i <= 1000;i++)
    {
        a[tmp] = i;
        if(i==4)continue; 
        if(i%2==0)
        {
            int o = i / 2;
            b[tmp] = o * o - 1;
            c[tmp] = o * o + 1;
        }
        else
        {
            int o = (i - 1) / 2;
            b[tmp] = 2 * o * o + 2 * o;
            c[tmp] = b[tmp] + 1;
        }
        tmp++;
    }
}
int main()
{
    int n;
    cin >> n;
    bl();
    int cnt=0;
    for (int i = 1; i <= n; i++)
    {
        if(a[i]<=n&&b[i]<=n&&c[i]<=n)cnt++;
    }
    cout<<cnt<<endl;
    return 0;
}

2024/5/24 21:01
加载中...