結果
| 問題 | No.1381 Simple Geometry 1 |
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2026-05-26 14:13:50 |
| 言語 | Go (1.26.1) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 2,000 ms |
| コード長 | 1,667 bytes |
| 記録 | |
| コンパイル時間 | 10,241 ms |
| コンパイル使用メモリ | 294,136 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2026-05-26 14:14:03 |
| 合計ジャッジ時間 | 11,624 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_1 |
| 純コード判定待ち |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 29 |
ソースコード
package main
import . "fmt"
func main() {
var x,y,z,w float64
Scan(&x,&y,&z,&w)
ans := (x - y*z)/2
Println(ans)
}
/*
考察
|BC| = L
と置くと
|AB| = X/L
|PD| = L - Y
|QD| = X/L - Z
となり
3つの角の三角形の面積の式を立てられるので
求める三角形の面積Sは全体の面積から3つの角の三角形を引いた形なので
S = X - |BC|*|CP|/2 - |AB|*|AP|/2 - |PD|*|QD|/2
= X - L*Z/2 - X/L*Y/2 - (L-Y)*(X/L-Z)/2
= (X - Y*Z)/2
となり
入力の値からだけで面積が求まる
(Wを含めて全部が整数で整合性が取れる入力ってどうやって作るんだろうか?難しそう)
さて、サンプルは上記でOKのようなのでそれでは難易度設定に合わない
コーナーケースが存在するかについて考えねば
さきほど |PD| = L - Y としたが
点Pが点Dと一致しないとは問題の条件に書かれてなく保証されないので
|PD| = 0 もありうる?(その場合、点Qは点Dとは一致しない、点Pと点Qは一致しないことが問題の条件で保証されてるため)
その場合の面積はどうなるのか
まぁ |AP| = |AD| = L = Y となるので
BPは長方形の対角線になるので△BPCは長方形の半分
そこから△BCQを引けば求める面積になるはず?
S = X/2 - L*Z/2
= X/2 - Y*Z/2
一致ですね
点Qが点Dと一致する場合はどうか?
|CQ| = |CD| = X/L = Z
BQは対角線なので求める面積はさっきと同様に
S = X/2 - X/L*Y/2
= X/2 - Y*Z/2
一致ですね
さて、Wを使用しないし、難易度設定に合わないし、何か見落としが…?
*/
ID 21712