題目連結:https://ac.nowcoder.com/acm/contest/370/J
時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld
題目描述
Rinne 剛剛學習了最簡二次根式,于是她想用程式實作一個。
為了簡化問題,在本題中,最簡二次根式 a√bab 的定義為:
不存在b的一個因子k s.t. ∃x∈N∗,x2=k
即根号下的數字不含平方數因子。
舉個最簡二次根式的例子:√5,√20050117
舉個不是最簡的例子:√20,√444
現在 Rinne 給了你形如 √n 的式子中的 n,讓你輸出化簡後的結果 a√b 中的 a,b,如果這樣的式子在實數範圍内沒有意義,輸出 -1。
輸入描述:
第一行一個整數 T,表示資料組數。
接下來 T 行,每行一個整數 x 表示根号下的數。
輸出描述:
輸出一共 T 行,每行兩個數表示 √x 化簡後的答案 a,b
輸入
4
20
25
-2005
11
輸出
2 5
5 1
-1
1 11
說明
備注:
解題思路
#include <math.h>
#include <stdio.h>
int main()
{
int n, t;
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
if (n < 0)
{
printf("-1\n");
continue;
}
for (int i = sqrt(n); i > 0; i--)
{
if (!(n % (i * i)))
{
printf("%d %d\n", i, n / (i * i));
break;
}
}
}
return 0;
}