結果
| 問題 |
No.197 手品
|
| コンテスト | |
| ユーザー |
tsuchinaga
|
| 提出日時 | 2019-03-08 12:23:40 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 974 bytes |
| コンパイル時間 | 10,773 ms |
| コンパイル使用メモリ | 226,244 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-23 14:59:19 |
| 合計ジャッジ時間 | 12,074 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 34 WA * 9 |
ソースコード
package main
import (
"fmt"
"strings"
)
func main() {
var sb, sa string
var n int
_, _ = fmt.Scan(&sb, &n, &sa)
d := 0 // 違いの数
for i, c := range sb {
if string(c) != string(sa[i]) {
d++
}
}
if d%2 != 0 { // 数が変わってるなら成功
fmt.Println("SUCCESS")
return
}
if d == 2 { // 違いがあって
if sb[1] == sa[1] { // 真ん中が一致なら2手、不一致なら1手で正しい位置にできる
n -= 2
} else {
n -= 1
}
}
if n < 0 { // 元に戻したときに移動可能な手数がマイナスなら成功
fmt.Println("SUCCESS")
return
}
switch strings.Count(sb, string(sb[1])) { // 真ん中の文字の個数
case 1: // 両端が一致し、真ん中だけ違う
if n%2 == 0 {
fmt.Println("FAILURE")
} else {
fmt.Println("SUCCESS")
}
case 2: // 右2つか、左2つが一致し、残りの1つが違う
fmt.Println("FAILURE")
case 3: // 全部一緒
fmt.Println("FAILURE")
}
}
tsuchinaga