PYTHA NTUcoder – Pythagoras

Nguồn đề bài: http://ntucoder.net/Problem/Details/121

1. Đề bài PYTHA NTUcoder

Định lý nổi tiếng mang tên nhà toán học người Hy Lạp Pythagoras phát biểu rằng trong một tam giác vuông thì bình phương độ  dài cạnh huyền c  bằng tổng bình phương độ  dài hai cạnh góc vuông a và b.
Trên thực tế luôn tồn tại những tam giác vuông có độ dài của ba cạnh là các số nguyên.

Bạn được cho trước số  nguyên a  là độ  dài của một cạnh góc vuông, nhiệm vụ của bạn là hãy viết một chương trình để  đếm xem có bao nhiêu số nguyên b (b>a) là độ  dài của cạnh góc vuông còn lại sao cho độ dài cạnh huyền c là một số nguyên.

Dữ liệu nhập

– Là số nguyên a (1 ≤ a ≤ 106) là chiều dài của cạnh góc vuông nhỏ

Dữ liệu xuất

– Là số  lượng số nguyên b là độ dài của cạnh góc vuông lớn hơn tìm được sao cho độ dài cạnh huyền c là một số nguyên.

Ví dụ

  • input
    2
    output
    0
  • input
    3
    output
    1
  • input
    4
    output
    0

2. Hướng dẫn giải PYTHA NTUcoder

Thuật toán:ta có a^2+b^2=c^2 => a^2=(c-b)*(c+b);Do c-b<c và c-b là ước của a^2 nên ta chỉ cần duyệt các số nguyên từ 1 đến a-1 để tìm cạnh b và c thỏa mãn điều kiện đề bài.

3. Code PYTHA NTUcoder

//saker1417
#include <bits/stdc++.h>

using namespace std;

long long a;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin>>a;
    long long dem=0;
    for(int i=1;i<a;i++) if((a*a)%i==0)
    {
        long long b=i,c=(a*a)/i;
        if((b+c)%2==0&&(max(b,c)-min(b,c))/2>a) dem++;
    }
    cout<<dem;
}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *