問題一覧 > ネタ問題

No.8051 cracked

レベル : / 実行時間制限 : 1ケース 1.024秒 / メモリ制限 : 200 MB / リアクティブ問題 (詳しくはこちら
タグ : / 解いたユーザー数 7
作問者 : maimai / テスター : maimai
2 ProblemId : 2675 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-07-09 03:44:13

note

これは yukicoder April fool contest 2019 の問題として作問されました.

更新:2023/07/09

ジャッジコードが Ruby3.2 に非対応だったため、ジャッジコードを修正、リジャッジを行いました。
リジャッジ後、スペシャルジャッジが AC と判定しているのにも関わらず TLE 判定になっている提出が一部あるようです。

問題文

入力から提出したソースコードが与えられます.
ただし,文字コード32以上126以下のある 1byte については,異なる文字コード32以上126以下の 1byte に書き換えられています.

書き換えられた位置(0-index・byte単位で)と書き換わる前の文字,書き換わった後の文字を標準出力に出力してください.


ソースコードが3000byteを超える場合, ソースコード中に書き換えられる文字が存在しない場合(例えば改行だけ等)は,
文字列WAを入力として与えた後,WrongAnswerとなります.

文字コード33以上126以下の文字を次に列挙します.文字コード32は半角スペースです.

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

また,プログラムはCかC++14で作成してください.
それ以外の言語(Ruby,Pythonなど)は WrongAnswer となります.

提出するプログラムは,次のコンパイルを実行した時に,どちらかが終了コード0を返す必要があります.
どちらも終了コードを0を返す場合,C言語のコードと提出したと解釈されます.

gcc7 -x c -std=c11 _filename_
g++ -x c++ _filename_

23:58追記:C++のコンパイルオプションから -std=gnu++14 を除外しました


入力

文字コード32以上126以下のある 1byte について,異なる文字コード32以上126以下の 1byte に書き換えられた,提出したソースコードが与えられます.

出力

1行目に,書き換えられた位置を0-index・byte単位で出力してください.
2行目に,書き換わる前の文字を"で囲んで出力してください.
3行目に,書き換わった後の文字を"で囲んで出力してください.
最後の改行はあっても無くても構いません.

ヒント

リアクティブ問題として実装されているため,通常問題では起きないがリアクティブでは発生するようなWA,TLEが存在するかもしれません.
例えば,EOFが来ないらしく,C言語でwhile(getchar() != -1);と書くとTLEします.

提出したプログラムの終了コードが0以外になってもREを返すとは限りません.

サンプル

サンプル1
例えば,次のコードを提出したとします.
main(){
  printf("10\n\"p\"\n\"m\"");
}
ジャッジによって次のように書き換えられたとします.この書き換えられたコードが標準入力から与えられます.
main(){
  mrintf("10\n\"p\"\n\"m\"");
}
pからmに書き換わりました.
また,m,a,i,n,(,),{,改行,半角SP,半角SP,p,...から,0-indexedで10byte目が書き換えられていると分かります.
よって,次を出力しなければなりません.
10
"p"
"m"

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。