結果
問題 |
No.3290 Encrypt Failed, but Decrypt Succeeded
|
ユーザー |
![]() |
提出日時 | 2025-10-03 22:21:34 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 16 ms / 2,000 ms |
コード長 | 742 bytes |
コンパイル時間 | 270 ms |
コンパイル使用メモリ | 27,192 KB |
実行使用メモリ | 7,720 KB |
最終ジャッジ日時 | 2025-10-03 22:21:49 |
合計ジャッジ時間 | 1,590 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
コンパイルメッセージ
main.c: In function ‘main’: main.c:39:26: warning: format ‘%c’ expects argument of type ‘int’, but argument 2 has type ‘long long int’ [-Wformat=] 39 | printf("%c", 'a' + v - 1); | ~^ ~~~~~~~~~~~ | | | | int long long int | %lld main.c:7:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 7 | scanf("%lld %lld", &n, &k); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ main.c:9:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 9 | scanf("%s", s); | ^~~~~~~~~~~~~~
ソースコード
#include<stdio.h> char s[300005]; long long int suf_cnt[300005]; int main() { long long int n, k; scanf("%lld %lld", &n, &k); long long int i; scanf("%s", s); suf_cnt[n] = 1; if (s[n - 1] > '0') suf_cnt[n - 1] = 1; else suf_cnt[n - 1] = 0; for (i = n - 2; i >= 0; i--) { if (s[i] == '0') { suf_cnt[i] = 0; continue; } suf_cnt[i] = suf_cnt[i + 1]; if (10 * (s[i] - '0') + (s[i + 1] - '0') < 27) suf_cnt[i] += suf_cnt[i + 2]; if (suf_cnt[i] > k) suf_cnt[i] = k + 1; } long long int v; for (i = 0; i < n; i++) { if (suf_cnt[i + 1] < k) { v = 10 * (s[i] - '0') + (s[i + 1] - '0'); i++; k -= suf_cnt[i]; } else v = s[i] - '0'; printf("%c", 'a' + v - 1); } printf("\n"); return 0; }