社区讨论

求助!满江红 不道哪里出问题了

灌水区参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m1p27g0u
此快照首次捕获于
2024/09/30 21:42
去年
此快照最后确认于
2024/09/30 21:45
去年
查看原帖
下界传送门 代码:
CPP
#include <bits/stdc++.h>
using namespace std;
bool ok(long long x){
	long long d = sqrt((long double)x + 0.5);
	if(d * d == x){
		return true;
	}
	return false;
}
int main(){
	int k;
	cin >> k;
	while(k--){
		long long n, d, e;
		cin >> n >> d >> e;
		long long m = n - d * e + 2;
		long long t = m * m - 4 * n;
		if(t < 0 || !ok(k)){
			puts("NO");
			continue;
		}
		bool flag = false;
		long long now = sqrt((long double)t), p, q;
		if((m + now) % 2 == 0){
			q = (m + now) / 2;
			if(n % q == 0){
				p = n / q;
				flag = true;
			}
		}else if(m - now > 0 && (m - now) % 2 == 0){
			q = (m - now) / 2;
			if(n % q == 0){
				p = n / q;
				flag = true;
			}
		}
		if(!flag){
			puts("NO");
			continue;
		}else{
			if(p > q){
				swap(p, q);
				//cout << p << " " << q << endl;
			}
			cout << p << " " << q << endl;
		}
	}
	return 0;
}
到底是哪里出问题了?我写错哪了?(疑问)我太蒻了(T_T),各位大佬教教我,多谢

回复

2 条回复,欢迎继续交流。

正在加载回复...