« javascriptテスト | メイン | 三王岩を見に行ってきました(^^)/ »

2020年1月30日 (木)

昨日のエデュフォの問題をちょこっとだけ覗いてみる

というかこどふぉ自体ロシアとかアメリカとかの時間に合わせているようで日本だと夜中にしか参加できないのがなんとも(それでも参加している方は多いようですが…)

私は参加できなかったのでとりあえず問題だけでもちょろっと見てみましたが難しい…

https://codeforces.com/contest/1295/problem/A

A問題からしてこれですからね…orz

問題の要旨としては、

・デジタル式の時計の一部分で表すことができる最大の整数はいくつか

みたいな感じですかね(相変わらず説明力が…)

例えば2が入力として与えられた場合、|を二個並べることにより1が表現できこれが最大の数になり、3だと

ー|

 |

みたいに並べて7が表示できてこれが最大の整数となる…こんな感じかな(*_*;

多分法則さえわかればすぐに解ける問題っぽいですが、頭の悪い私には難しい。

とりあえずチャレンジするだけしてみますが、すぐに解説みてしまうかも。

追記:これ多分2で割り切れる場合には1で全部埋めるのが最大の数で割り切れない場合には7を

先頭につければよさそうな感じですね…(まだ実装はできていませんが…)

さらに追記:普通にACしました。というか本当に上で書いたとおりでした。

int main()
{
ll t;
cin >> t;
rep(i,t){
ll n;cin >>n;
ll n2=n/2;
if(n%2 ==0){
rep(i,n2){
cout << 1;
}
}else{
cout<<7;
rep(i,n2-1){
cout <<1;
}
}
cout<<endl;
}
}

一応これがACしたコードです。(ライブラリを貼ると長くなるのでmain関数部分だけ貼ってますが…)

もう少しきれいなコードをかけるようになりたい(・.・;)あとrep文を回して数字を表現するってどうなんだ。TLEの可能性もあるし…。

B以降は…見なかったことにしておこう…。

コメント

コメントを投稿

アクセスランキング

Powered by Six Apart