p1574.cpp
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· C++ 代码 · 共 41 行
CPP
41 行
#include <stdio.h>
#include <math.h>
#define Limit 100000
int Ansx [Limit + 100] , Ansy [Limit + 100] , Ansz [Limit + 100];
bool prime ( int a , int b )
{
return b == 0 ? a == 1 : prime ( b , a % b );
}
void Create ()
{
int Tot , x , y , u , v , i , j;
for ( x = 3 , Tot = 0; Tot <= Limit; x ++ ) if ( x & 1 ) {
for ( i = int ( sqrt ( x )); i > 0; i -- ) if ( x % i == 0 ) {
j = x / i;
u = ( j + i ) >> 1, v = ( j - i ) >> 1;
y = 2 * u * v;
if ( x < y && prime ( y , x ) ) Ansx [Tot] = x , Ansy [Tot] = y , Ansz [Tot ++] = u * u + v * v;
}
} else {
i = x / 2;
for ( v = int ( sqrt ( i )); v > 0; v -- ) if ( i % v == 0 ) {
u = i / v;
if ( u & 1 == v & 1 ) continue;
y = u * u - v * v;
if ( x < y && prime ( y , x ) ) Ansx [Tot] = x , Ansy [Tot] = y , Ansz [Tot ++] = u * u + v * v;
}
}
}
main ()
{
Create ();
int N;
while ( scanf ( "%d" , &N ) != EOF )
N -- , printf ( "%d %d %d\n" , Ansx [N] , Ansy [N] , Ansz [N] );
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?