結果

問題 No.550 夏休みの思い出(1)
ユーザー hotpepsihotpepsi
提出日時 2017-08-01 22:55:03
言語 C++11
(gcc 11.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,003 bytes
コンパイル時間 341 ms
コンパイル使用メモリ 53,240 KB
最終ジャッジ日時 2024-11-14 20:11:11
合計ジャッジ時間 1,097 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
main.cpp: In function ‘LLLL solve(LL, LL, LL)’:
main.cpp:12:29: error: ‘sqrt’ was not declared in this scope
   12 |                 LL d = (LL)(sqrt((double)b * b - 4 * (double)a * c));
      |                             ^~~~

ソースコード

diff #

#include <iostream>
#include <algorithm>

using namespace std;

typedef long long LL;
typedef pair<LL, LL> LLLL;

LLLL solve(LL a, LL b, LL c) {
	LL p = 0, q = 0;
	if (a) {
		LL d = (LL)(sqrt((double)b * b - 4 * (double)a * c));
		for (LL e = d - 64; e <= d + 64; ++e) {
			LL x = (-b - e) / (2 * a);
			LL y = (-b + e) / (2 * a);
			if (a * x * x + b * x + c == 0 && a * y * y + b * y + c == 0) {
				p = x, q = y;
				break;
			}
		}
	}
	return LLLL(p, q);
}

int main(int argc, char *argv[])
{
	LL a, b, c;
	cin >> a >> b >> c;
	LL ans[3];
	for (LL x = -1000000; x <= 1000000; ++x) {
	LL p = a + x;
		LL q = b + p * x;
		if ((c == 0 && (x == 0 || q == 0)) || (x && q && (c % x) == 0 && (c % q) == 0 && abs(c / x + q) <= 1)) {
			LLLL y = solve(1, p, q);
			if (y.first || y.second) {
				ans[0] = x;
				ans[1] = y.first;
				ans[2] = y.second;
				break;
			}
		}
	}
	sort(ans, ans + 3);
	for (int i = 0; i < 3; ++i) {
		if (i) {
			cout << " ";
		}
		cout << ans[i];
	}
	cout << endl;
	return 0;
}
0