KOJのFizzBuzz系問題二問が解けたので書く.一つ目と二つ目とで言語が違うがあまり気にしてはいけない(使用できたパソコンが違う).
KOJ 0003 FizzBuzz(C Language AC)
一問目、こちらは二回くらい考えてすぐできた.特に書くことなし.但し、ここでの妄想が後の悲劇を招いてしまう事になるとは予測していなかった...
KOJ 0028 FizzBuzzしろよ!(C++ AC)
二問目にして問題のやつ.問題見た時にとりあえずKOJ 0003と一緒でいいんじゃね?と思ったのが運の尽きだった.
まず、初めにfor文でループさせて計算、出力を一緒にやろうとする.結果、ソースを書き上げられず、失敗する(この時点ではあまり理解できていない).
次に、ループを使ってif文でFizzBuzz判定をさせる、その時対応した文字列を文字配列を作ってそれに入れる.その後でループで一気に出力しようと画策する.→結果、コードを書けてもideonでは実行できなくて、VC++2010でも同じようになってしまう(失敗).
最終的に、最初のやり方に戻る.forでループをかけて、直接ループ内で判定した.この時、最初はCEでなんでや!って思ったけど三回くらい読んでたらifの条件が
"n[i]%3==0"
になってしまっていたことに気づく(遅い).で、他の部分も合わせて修正して、提出→無事ACで終わった.
結果として、KOJ 0028は問題読んでからACまで計4日かかってしまっていた.こういう細かい事に気づけてない自分がやっぱり悔しいとは思う.これからAntsを解こうと思っているのだが、ちょっと心配.が、最終的には自力で解いてACなので良かったと思う.
以下、コード
#include<iostream> using namespace std; int main(){ int n; int cn; cn=1; cin>>n; for(int i=1;i<=n;i++){ if((i%3==0)&&(i%5==0)){ cout<<cn<<":"<<"FizzBuzz"<<endl; }else if(i%3==0){ cout<<cn<<":"<<"Fizz"<<endl; }else if(i%5==0){ cout<<cn<<":"<<"Buzz"<<endl; }else{ cout<<cn<<":"<<endl; } cn++; } return 0; }
あと、KOj関連は0026,0033も一応解けた.