文系ギャルが0から始める競技プログラミング#14
Intro
この記事は不定期連載です。
↓最初の一本はこちら↓
文系ギャルが0から始める競技プログラミング#0
↓直前の記事はこちら↓
文系ギャルが0から始める競技プログラミング#13
・記事への反響
#9で書いた問題について、Twitterでアドバイスいただきました!
>
①と②の操作を何回繰り返すか(maxに何入れるか)で詰まっていました…。
10が1回しか2で割れないんだから、10^9は9回しか割れないんじゃね?と天才的ひらめきにより思って提出したのが
WAで悲しみに暮れていましたが、とりあえずいっぱい入れとくことで解決しました。。。腑に落ちないけど。。
の、腑に落ちなかった部分を解説してもらいました!
他の方からもリプ頂いたんですが、確かに2で割れる数はいっぱいあるので一番2で割れる数で考えなきゃいけなかったですね。
イケメンスマート解法までいただきました!
また一歩天才力が上がってしまいました…。
ありがとうございました!!!!
Twitterやコメントで引き続きよろしくおねがいします!
(フォローしていただいた諸先輩方を競プロリストに入れてめっちゃみてます。)
・文字列を練習する回
引き続きAtCoder Beginners Selectionを解いて行きたかったのですが、ABC049Cが優勝できず詰まってしまったので、
元になったけんちょんさんの記事より文字列を扱う問題の類題を解いていきます!
・ABC095A
問題文
ラーメン店「高橋屋」のラーメンの値段は1杯700円ですが、トッピング(味玉、チャーシュー、ねぎ)を乗せた場合は1種類につき100円が加算されます。
ある客がラーメンを一杯注文し、店員にトッピングの希望を伝えました。
店員は注文の内容をメモ帳に文字列Sとして記録しました。
Sの長さは3文字で、Sの1文字目が o のとき客のラーメンに味玉を乗せることを、x のとき味玉を乗せないことを表します。
同様に、Sの2文字目、3文字目はそれぞれチャーシュー、ねぎの有無を表します。
Sが入力されると、対応するラーメンの値段を出力するプログラムを書いてください。
制約
Sは長さ3の文字列である。
Sの各文字は o または x である。
入力
入力は以下の形式で標準入力から与えられる。
S
出力
Sに対応するラーメンの値段が y円のとき、yの値を出力せよ。
― A - Something on It
全部のせたい!!!!
どうしてもラーメン屋さんに行くと味玉乗っけちゃうんですよね。
最近は仕事遅くなると天一行っちゃう病にかかってて普通に太る天一ギャルです。
そんなことはおいといて、サクッと解いていきます!
もとのラーメンを700円として、トッピングを乗せるか否かを3回判定して100円足すだけで良いと考えます。
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
string S;
cin >> S;
int ans = 700;
if(S[0] == 'o'){
ans += 100;
}
if(S[1] == 'o'){
ans += 100;
}
if(S[2] == 'o'){
ans += 100;
}
cout << ans << endl;
return 0;
}
stringはi文字目を[i]で指定できるらしいのでうまく使っていく〜〜!
for文でS[i]を判定したほうがスマートだったな…。
というわけで、優勝です。
ラーメン食べてきます。
・ABC085A
ラーメン美味しかったです。
問題文
2018年1月某日、高木さんは書類を書いています。
書類には、その日の日付を yyyy/mm/dd という形式で書き込む欄があります。
例えば、2018年1月23日は 2018/01/23 となります。
書類を書き終えたあと、高木さんは日付欄の先頭に誤って 2017 と書いてしまっていたことに気がつきました。
高木さんが日付欄に書いた文字列Sを入力すると、Sの先頭の4文字を2018に修正して出力するプログラムを書いてください。
制約
Sは長さ10の文字列である。
Sの先頭の8文字は 2017/01/ である。
Sの末尾の2文字は数字であり、1以上31以下の整数を表す。
入力
入力は以下の形式で標準入力から与えられる。
S
出力
Sの先頭の4文字を 2018 に置き換えて出力せよ。
― A - Already 2018
うわーめっちゃあるあるだ…
年度変わりとか新年はずっとやっちゃうコレ。
4文字目を8に変えるだけなので、瞬殺です。
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
string S;
cin >> S;
S[3] = '8';
cout << S << endl;
return 0;
}
今更ですが、"あ"と'あ'の違いがよくわかってないのですけれど
""は文字列に、''は1文字に使うってなんとなく思っていて
これでいいんでしょうか・・・。
まあ、動くからいっか!(優勝)
次はB問題2つを解いていきます!!
Outro
#15に続く!(不定期連載です。)
これは成功と挫折を繰り返し、
タピオカ片手に難問を解く、
ギャルプログラマが生まれるまでの物語である…。
この記事が気に入ったらサポートをしてみませんか?