メモ

yukicoderでゆるふわgolf

2016-05-01から1ヶ月間の記事一覧

yukicoder No.256 桁の数字を入れ替え (2)

問題はこちら No.256 桁の数字を入れ替え (2) - yukicoder任意に並び替えられるので元の並びは関係ない なので各数字がいくつ登場するかを記録して、大きい数から上位に配置していけば良い int main(){ int a[10],i; char s[100010]; gets(s); for(i=0;s[i];…

yukicoder No.254 文字列の構成

問題はこちら No.254 文字列の構成 - yukicoder初見では解けずに解説を読んでしまったのだけど、見事な解説が書いてあって思わずなるほどとうなってしまった。 以下ではその解説の方針に従うabab…babaと、a,bが交互に並ぶ文字列はaがn文字ある時、yukicoder …

yukicoder No.253 ロウソクの長さ

問題はこちら No.253 ロウソクの長さ - yukicoderyukicoder No.246 質問と回答 - メモとほとんど同じ ただし単純な2分探索では、例えばXが10の時、特定する前にロウソクが燃え尽きてしまい、11と区別ができず困るということで小さい値は最初に分けておく 最…

yukicoder No.251 大きな桁の復習問題(1)

問題はこちら No.251 大きな桁の復習問題(1) - yukicoderやることはyukicoder No.167 N^M mod 10 - メモと同じ N^Mをmod pで求めるのには Nはmod pの情報が Mはオイラーの定理(あるいはフェルマーの小定理)からmod p-1の情報があれば良い N,Mとも巨大な数な…

yukicoder No.249 N言っちゃダメゲーム (2)

問題はこちら No.249 N言っちゃダメゲーム (2) - yukicoder問題文中に「このゲームは、NとKが決まったら、先手・後手、どちらが勝つかわかることが知られています」とあるがこれは厳密には誤りで、正しくは"互いに最善手を尽くすなら"という条件が必要。 今…

yukicoder No.247 線形計画問題もどき

問題はこちら No.247 線形計画問題もどき - yukicoder問題は次のように読み替えられる 「a[i]円玉がたくさんあるとき、ちょうどC円を払うために必要な硬貨の枚数は最小でいくらか?」 ということで配るDPで書くことができる #define inf 1000000 //解が存在…

yukicoder No.246 質問と回答

問題はこちら No.246 質問と回答 - yukicoder二分探索(10^9<2^30) 整数の二分探索といえば普通は終了条件high-low>1にして(low,high)を (low+(high-low)/2,high)か(low,high-(high-low)/2)に更新していくのだけど d=high-lowとして終了条件をd>0、(low,d)…

yukicoder No.244 ★1のグラフの問題

問題はこちら No.244 ★1のグラフの問題 - yukicoder辺を動いて行き来できる頂点集合を島と呼ぶことにする 問題は「N頂点を1つの島にするには最低何本の辺が必要か?」 2つの島があった時、それぞれの島に属する頂点を1つずつ選び、その2頂点間を辺で結ぶと…

yukicoder No.242 ビンゴゲーム

問題はこちら No.242 ビンゴゲーム - yukicoder5数の組み合わせは通りあり、 N個の数でビンゴになるような5数の組み合わせが通りあるので 各列についてN個目までにビンゴになる確率は5×5のカードは縦横斜めで12ビンゴできるので期待値の線形性より求めるもの…

yukicoder No.240 ナイト散歩

問題はこちら No.240 ナイト散歩 - yukicoder解説には「深さ優先探索」「幅優先探索」の練習問題とあったので、とりあえず深さ優先で実装してみる int x,y, a[8]={1,2,2,1,-1,-2,-2,-1}, b[8]={2,1,-1,-2,-2,-1,1,2}; void f(int p,int q,int n){ //n回動い…

yukicoder No.239 にゃんぱすー

問題はこちら No.239 にゃんぱすー - yukicoder各文字列を読み込んでstrcrpで"nyanpass"と比較し、各人物が何回"nyanpass"と言っているか調べる 全員に対して"nyanpass"と言えば、その回数はN-1になっているので そのような人物がちょうど1人いるかどうかを…

yukicoder No.237 作図可能性

問題はこちら No.237 作図可能性 - yukicoder問題文からリンクされている定規とコンパスによる作図 - Wikipediaによれば、n≧3に対し、正n角形が作図可能であることの必要十分条件は nが0個以上の相異なるフェルマー素数と2ベキ(1含む)の積で表されているこ…

yukicoder No.236 鴛鴦茶

問題はこちら No.236 鴛鴦茶 - yukicoderコーヒを全部使っても紅茶が足りるならそれが最大 足りないなら逆に紅茶に合わせれば良い int main(){ double a,b,x,y; scanf("%lf%lf%lf%lf",&a,&b,&x,&y); if(x/a*b<=y)printf("%f",x+x/a*b); //コーヒーを全部使う…

yukicoder No.231 めぐるはめぐる (1)

問題はこちら No.231 めぐるはめぐる (1) - yukicoder1%が3万なので必要経験値は300万 1回あたり50万稼げればいいので G[i]-D[i]*3万≧50万 となるiがあればそこに6回行けば良い int main(){ int i,n,f=0,p,q; scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%d%…

yukicoder No.229 線分上を往復する3つの動点の一致

問題はこちら No.229 線分上を往復する3つの動点の一致 - yukicodereditorialの解説がとても丁寧で、これ以外に説明の方法もないので、以下ほとんど同じことを書く池の周りを走る算数の問題を知っていればイメージしやすいので先にその例例題 1周3.6kmの池の…

yukicoder No.228 ゆきこちゃんの 15 パズル

問題はこちら No.228 ゆきこちゃんの 15 パズル - yukicoder今現在yukicoderの「解説」からリンクされてるやつは嘘解法なので注意入れ替えを行うと動けなくなるので、入れ替えをするならそのパネルは移動後に正しい位置に移らならなければならない。 そうい…

yukicoder No.227 簡単ポーカー

問題はこちら No.227 簡単ポーカー - yukicoderまず各カードが何枚あるか調べ、2枚組み・3枚組みが何組あるか調べる int main(){ int i,d=0,t=0,a[14]={}; for(i=0;i<5;i++){ scanf("%d",&p); a[p]++; } //カードiがa[i]枚ある for(i=1;i<=13;i++){ if(a[i]=…

yukicoder No.224 文字列変更(easy)

問題はこちら No.224 文字列変更(easy) - yukicoder読み込んで前から見比べていって違うものの個数をカウントするだけ (求める値はSとTのハミング距離というやつになる) int main(){ char s[1010],t[1010]; int i,n=0; scanf("%*d\n"); gets(&s);gets(&t);…

yukicoder No.222 引き算と足し算

問題はこちら No.222 引き算と足し算 - yukicoder読み込んだ演算子で場合分けするだけ int main(){ int x,y; char op; scanf("%d%c%d",&x,&op,&y); printf("%d",op=='+'?x-y:x+y); return 0; } '+'は43、'-'は45なのでop-44で±1が作れるを利用すると a,b; ma…

yukicoder No.221 犯罪都市

問題はこちら No.221 犯罪都市 - yukicoder条件付き確率の問題 1万人あたりN人がマフィアなので、「構成員」と判定される人数は1万人あたり (10000-N)*0.01+N*0.99 人となる 実際には構成員でない人は(10000-N)*0.01 人なので、誤認逮捕率は ((10000-N)*0.01…

yukicoder No.220 世界のなんとか2

問題はこちら No.220 世界のなんとか2 - yukicoderよく考察すると難しい計算はしなくて良い事がわかる10^Pは該当しないので、必要なら上位にleading zeroをつけることで「ちょうどP桁の数のうち条件を満たすものは何個あるか?(ただし0を除く)」という問題…

yukicoder No.219 巨大数の概算

問題はこちら No.219 巨大数の概算 - yukicoderx^yは10^(y*log10(x))であることを利用すれば Z=floor(y*log10(x)) X.Y...=10^frac(y*log10(x)) となる(frac(x):=x-floor(x))問題公開当初は正確に求める必要があり、9.9999...×10^Zや1.0000... ×10^Zみたい…

yukicoder No.218 経験値1.5倍

問題はこちら No.218 経験値1.5倍 - yukicoder必要な素材の個数はそれぞれceil(a/b)、ceil(a/c)で計算できる。 ceil(a/b)≦ceil(a/c)*2/3 かどうかを確かめれば良い int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); b=(a-1+b)/b; c=(a-1+c)/c; puts(c>b*2/…

yukicoder No.216 FAC

問題はこちら No.216 FAC - yukicoderK君を0番の人だと思えば、各番号の人の得点を求めて、0番の人の点より大きな点の人がいるかを調べれば良い int main(){ int a[101]={},b[101]={},i,n,k,s=0; scanf("%d",&n); for(i=0;i<n;i++)scanf("%d",a+i); for(i=0;i<n;i++){ scanf("%d",&k); b[k]+=a[i]; } for(i=1;i<=100;i++)if(b[i]>b[0])s++; puts(s?"NO":"YES"); re</n;i++)scanf("%d",a+i);>…

yukicoder No.212 素数サイコロと合成数サイコロ (2)

問題はこちら No.212 素数サイコロと合成数サイコロ (2) - yukicoder数学 確率変数X,Yが独立ならE[XY]=E[X][Y]、ということを使う (線形性E[X+Y]=E[X]+E[Y]は任意の確率変数X,Yで成立するが、E[XY]=E[X]E[Y]の成立にはX,Yの間に無相関性(独立性より弱い)…

yukicoder No.211 素数サイコロと合成数サイコロ (1)

問題はこちら No.211 素数サイコロと合成数サイコロ (1) - yukicoder2重ループで全探索するだけ int main(){ int a[]={2,3,5,7,11,13},b[]={4,6,8,9,10,12},i,j,n=0,k; scanf("%d",&k); for(i=0;i<6;i++)for(j=0;j<6;j++)if(k==a[i]*b[j])n++; printf("%.12f…

yukicoder No.208 王将

問題はこちら No.208 王将 - yukicoder障害物がないならば、必要な移動距離はmax(x,y) x

yukicoder No.207 世界のなんとか

問題はこちら No.207 世界のなんとか - yukicoder調べるべき数は高々100個なので全て毎回チェックすれば良い int main(){ int a,b,i,t,f; scanf("%d%d",&a,&b); for(i=a;i<=b;i++){ f=0; if(i%3==0)f=1; //3の倍数かチェック for(t=i;t;t/=10)if(t%10==3)f=1…

yukicoder No.204 ゴールデン・ウィーク(2)

問題はこちら No.204 ゴールデン・ウィーク(2) - yukicoder問題文の解釈が難しかった 「連続した最大D日間の平日を休日とする権利が与えられます(分割してはいけません)」 というのは「Dが4のときxxoxoxx→OOoOoOxとすることは出来ない」というだけの意味では…

yukicoder No.203 ゴールデン・ウィーク(1)

問題はこちら No.203 ゴールデン・ウィーク(1) - yukicoder順番に調べていくだけ int main(){ char a[15]; int s=0,n=0,i; //sに現時点での最大連休数、nに現在の連休数を保存 gets(a);gets(a+7); //無理やり連結 for(i=0;i<14;i++){ if(a[i]=='o'){ n++; s=s