久々に問題を説いたような…?
WUPC 2012 B問題
問題
B: パスワード - WUPC 2012 | AtCoder
回答
Submission #416934 - WUPC 2012 | AtCoder
総当りでOK...
N = int(input()) li = [input() for _ in range(N)] table = [] for i in range(N): for j in range(N): if i != j: table.append(li[i] + li[j]) res = sorted(table) print(res[0])
お誕生日コンテスト A問題
問題
A: A + B - お誕生日コンテスト | AtCoder
回答
Submission #417108 - お誕生日コンテスト | AtCoder
1つ目はA = -1, B = 1でOK.AとBの符号が異なり,絶対値が等しい時,和は0です.このプログラムでは和が0の時処理を終了となりますが,前述のようなテストケースだと落ちます.
関係しそうなプログラム断片.
while(cin >> A >> B, A+B!=0) { cout << A+B << endl; }
2つ目は,A=-2147483648でOK.絶対値の計算をしていますが,Aがint型最小値の時に対応する正の値ってないんですよね.表現範囲を知っていれば簡単に発想できるかと.
3つ目は実はACできただけで,よくわかりませんが,負の値を入れた時におかしくなる場合があります.発見した限りでは,一番簡単なパターンとして A = -1, B = 1のように1つ目と同じ入力を行うと落ちます.(1になりますね)
あと適当にA = -4, B = -56で落ちたので,最初はこれで通しました.
ということで,実は1つ目と3つ目を落とすコードって集約してかけちゃうんですよね.
結果,このようになりました.
-2 2 -2147483648 0 0 0
わざわざプログラム書かなくても,出力すればいいだけですので,テキストで提出しましたw
初めて使った!www
というわけで,また少しづつ解いていきます….