已超过 507 天未更新,某些文章具有时效性,若有错误或已失效,请反馈到greenhat2333@gamil.com
牛客70j-Rinne Loves Math
题目
1 2 3
| 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld
|
题目描述
给了你形如的式子中的 n,让你输出化简后的结果 中的 a,b,如果这样的式子在实数范围内没有意义,输出 -1。
输入描述
1 2
| 第一行一个整数 T,表示数据组数。 接下来 T 行,每行一个整数 x 表示根号下的数。
|
输出描述
1
| 输出一共 T 行,每行两个数表示化简后的答案 a,b
|
示例1
输入
输出
说明
20=4×5
25=5×5
实数范围内中 n 小于 0 没有意义。
11 是个质数。
备注
题解
比较水的模拟题,但是比赛时想错了,想得有点麻烦了,以为只除4和9就行了,emmm,不过还好最后做出来了。既然是化简,那么肯定是平方,所以逆序遍历,如果有n%(x*x)==0就代表可以化简出x,为什么是逆序,因为要求最简,所以可能得除以最大(之前就是没想到这个emmm)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
#include <iostream> #include <cmath> using namespace std;
int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t, n; cin >> t; while(t--) { cin >> n; if(n < 0) { cout << "-1" << endl; continue; } for(int i = sqrt(n); i >= 0; i--) { if(n % (i*i) == 0) { cout << i << " " << n/i/i << endl; break; } } } return 0; }
|