アゴドリルの備忘録

まったり競技プログラミングとCTFなど

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

f:id:agodoriru:20161126220420p:plain

 

ctf4b 金沢 参戦してきました!!!

初めてのctf参戦

結果は910点、7問解けて26位でした!!!

 

f:id:agodoriru:20161126220421p:plain

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まで連絡お願いします

 

 

 

f:id:agodoriru:20161127110015j:plain

ABC026B N重丸

問題

B: N重丸 - AtCoder Beginner Contest 026 | AtCoder

方針

①入力

②与えられるデータがソートされていない場合があるので、まず降順にソートする

③外側から塗ってくので、

外から奇数番目の円ー赤色、

外から偶数番目の円ー白色

になるので奇数番目の半径の二乗の和から偶数番目の半径の二乗の和を引くという操作を繰り返す

④その値に円周率πをかける

⑤出力

注意

c++で実装するとき、coutで出力すると許容誤差の範囲を超えてしまうので、printfで出力する

コード

 

 

 

自己紹介

 

趣味で競技プログラミングとCTFやってる物理学科の大学生です

AtCoderで解いた問題や、CTFのwriteupを書いていくつもりです

初心者なのでミスとかあれば、指摘してください

よろしくお願いします