ABC003B AtCoderトランプ
方針
S・Tのi番目を比較していく
- 同じ場合→何もしない
- 片方が@のとき、他方がa,t,c,o,d,e,rのいづれか→何もしない
- それ以外→条件に適していない→ループを抜ける
コード
#include <iostream> #include <string> using namespace std; int main(){ bool flag=true; string s,t; cin>>s>>t; for(int i=0;i<s.size();i++){ if(s[i]==t[i]){ continue; }else if(s[i]=='@'){ if(t[i]=='a'||t[i]=='t'||t[i]=='c'||t[i]=='o'||t[i]=='d'||t[i]=='e'||t[i]=='r'){ continue; }else{ flag=false; break; } }else if(t[i]=='@'){ if(s[i]=='a'||s[i]=='t'||s[i]=='c'||s[i]=='o'||s[i]=='d'||s[i]=='e'||s[i]=='r'){ continue; }else{ flag=false; break; } }else{ flag=false; break; } } if(flag){ cout<<"You can win"<<endl; }else{ cout<<"You will lose"<<endl; } }
ABC002B 罠
方針
母音を除いて出力する
注意
最後に改行を忘れないようにする
コード
#include <iostream> #include <string> using namespace std; int main(){ string s; cin>>s; for(int i=0;i<s.size();i++){ if(s[i]=='a'||s[i]=='i'||s[i]=='u'||s[i]=='e'||s[i]=='o')continue; else cout<<s[i]; } cout<<endl; return 0; }
ABC001B 視点の確保
方針
if分を用いて場合分けしていく
注意
単位をm(メートル)かkm(キロメートル)で統一したほうがいい
コード
#include <iostream> using namespace std; int main(){ int m; cin>>m; if(m<100){ cout<<"00"<<endl; }else if(100<=m&&m<1000){ cout<<0<<m/100<<endl; }else if(1000<=m&&m<=5000){ cout<<m/100<<endl; }else if(6000<=m&&m<=30000){ cout<<m/1000+50<<endl; }else if(35000<=m&&m<=70000){ cout<<(m/1000-30)/5+80<<endl; }else{ cout<<89<<endl; } return 0; }
ctf4b 金沢 writeup
ctf4b 金沢 参戦してきました!!!
初めてのctf参戦
結果は910点、7問解けて26位でした!!!
writeupを書いてみる
Warmup(Misc,10)
提出方法の確認を兼ねているっぽい
アクセスして、フラッグが書かれているので、そのまま提出
てけいさん for ビギナーズ(Misc,200)
解法わからず、問題文の通り手計算で計算した
100回連続で7+3のような、四則演算をするのだが、1回ミスするとカウンターがリセットされてしまうので注意深く計算した
100回計算するとフラッグがでてくるので、それを提出
pythonでコードを書いて走らせるのが想定解らしい
Fix it(web,100)
講義の時に使ったchromeのdevtoolsを使う
webページにアクセスして、右クリック→検証ってやっていってNetworkタブを開いて中身を観てみると/web100/flag_is_here.phpとあるのでアクセスするとフラッグがある
Login as Admin(web,200)
いわゆる典型的なSQLインジェクション
nameにadmin
passにa' OR '1'='1
を入れてアクセスするとフラッグが出てくる
FileSystem(Forensics,100)
stringsコマンドをしてフラッグが出てきた
観てみよう(Forensics,200)
fileコマンドでファイルの種類を調べてみるとpcapファイルなので、wiresharkで開く
httpがあるので、follow tcp stream でctf4b{を検索するとフラッグが見つかる
Welcome Reversing World!(Binary,100)
やるべきことわからず、stringsしてみたらフラッグがみつかった
CountUp Game(Misc,200)
本番で解けなかったけど、、、
1~3の数字を言って、21を言ってはいけないゲームを10回勝利するとフラッグがとれるっぽい
ググってみると後攻の人が先行の人の言った数の和が4になるように言えばいいらしいのでごりごり10回やればflagとれたのかなあ
感想
正直、初めてこういう感じで勉強会に参加するのははじめてで、びびってたけど参加すると楽しかったのでこれからは積極的にこのような勉強会に参加していきたいです
本とかステッカーもいただきました!!!
ctf4bの運営の方にはこのような勉強会を開いていただきありがとうございました
ミス、不適切な部分あればコメント、twitterまで連絡お願いします
ABC026B N重丸
問題
B: N重丸 - AtCoder Beginner Contest 026 | AtCoder
方針
①入力
②与えられるデータがソートされていない場合があるので、まず降順にソートする
③外側から塗ってくので、
外から奇数番目の円ー赤色、
外から偶数番目の円ー白色
になるので奇数番目の半径の二乗の和から偶数番目の半径の二乗の和を引くという操作を繰り返す
④その値に円周率πをかける
⑤出力
注意
c++で実装するとき、coutで出力すると許容誤差の範囲を超えてしまうので、printfで出力する
コード