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ụ
- input2output0
- input3output1
- input4output0
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; }