kmjp's blog

競技プログラミング参加記です

Indeedなう(予選A) : A - 掛け算の筆算、B - Indeedなう!

Indeedなう予選に参加。WA無くまぁまぁ順調に完答できました。
http://indeednow-quala.contest.atcoder.jp/tasks/indeednow_2015_quala_1
http://indeednow-quala.contest.atcoder.jp/tasks/indeednow_2015_quala_2

A - 掛け算の筆算

2つの整数A,Bが与えられる。
これらを筆算で掛け算する場合、1ケタの掛算を何回行うかを答えよ。

両者の桁数の積を答えればよい。
地道に整数を10で割って桁数を求めても良いが、単にstring型で入力を受けて文字列長で判定する方が楽。

void solve() {
	int i,j,k,l,r,x,y; string s,t;
	cin>>s>>t;
	cout<<s.size()*t.size()<<endl;
}

B - Indeedなう!

文字列Sが与えられるので、"indeednow"のアナグラムかどうかを答えよ。

"indeednow"をソートしたものとSをソートしたものが等しいか比較すると楽。

void solve() {
	int i,j,k,l,r,x,y; string s,t;
	int N;
	
	t="indeednow";
	sort(t.begin(),t.end());
	cin>>N;
	while(N--) {
		cin>>s;
		sort(s.begin(),s.end());
		if(s==t) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
}

まとめ

元々簡単な問題ではあるけど、考え方次第で解き方が楽になるね。