結果
| 問題 |
No.3157 Nabeatsu
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-05-29 14:58:31 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 908 bytes |
| コンパイル時間 | 1,680 ms |
| コンパイル使用メモリ | 160,396 KB |
| 実行使用メモリ | 11,200 KB |
| 最終ジャッジ日時 | 2025-05-29 14:58:35 |
| 合計ジャッジ時間 | 3,947 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 43 WA * 2 |
ソースコード
import std;
void main() {
auto n = readln.chomp.dup;
const len = n.length;
while(true) {
const m = untriplize(n);
if(!isNabeatsu(m)) {
writeln(m);
return;
}
int id = -1;
foreach(i, c; m) {
if(c == '3') {
id = cast(int)i;
break;
}
}
if(id == -1) {
if(isNabeatsu(m)) {
n = (m[0..$ - 1] ~ cast(char)(m[$ - 1] - 1)).dup;
} else {
writeln(m);
return;
}
}
n = m[0..id] ~ "2" ~ "9".replicate(len - id - 1);
}
}
char[] untriplize(const char[] n) {
int p = 0;
foreach(c; n) {
const m = c - '0';
p += m;
}
const d = ((((n[$ - 1] - '0') - (p % 3 == 0)) + 10) % 10) + '0';
return (n[0..$ - 1] ~ d).dup;
}
bool isNabeatsu(const char[] s) {
int p = 0;
foreach(c; s) {
p += c - '0';
}
return s.any!"a == '3'" || p % 3 == 0;
}