問題1
与えられた2つのビット列について排他的論理和を求める問題。
ビット列の最大長が100であるため、long longを使用してもあふれてしまう。
素直にストリングを使い、評価していった。
コード
#include
#include
#include
#include
using namespace std;
#define REP(X, Y) for(long long int i = X;i < Y;i++)
#define rep(X) REP(0, X)
void main(){
string str1;
string str2;
string *result = new string;
getline(cin, str1);
getline(cin, str2);
rep(str1.length()){
*result += (str1.at(i) != str2.at(i))? "1":"0";
}
cout << *result << endl;
}
問題2
3つのベース文字列と、それに続く幾つかの文字列が与えられる。
ベース文字列には英字とsignと呼ばれる3つの記号 "-", ";", "_"が含まれているが、signは無視してよい。
続く文字列が、ベース文字列を結合したものであれば、ACCと出力し、結合したものでなければWAと出力する。
文字列系はC++で使い慣れていなかったため、PHPを使い出力した。実は問題を勘違いしており、コンテスト中に提出出来なかったのだが、終了してから完成させた。
考え方としては、ベース文字列からsignを全て取り去り純粋な文字列にした後、全て大文字に変換。
検査文字列も同じようにsignを取り去り大文字にした後、
素直にベース文字列と検査対象文字列をsign抜き取り、大文字か小文字に合わせた上で3!通り試せばよいということだった。
ナイー^ヴな実装が一番良いようだ。
問題3は解けず。4,5はまだ見てない。
精進だな。。。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。