メモ

yukicoderでゆるふわgolf

2016-04-11から1日間の記事一覧

yukicoder No.89 どんどんドーナツどーんといこう!

問題はこちら No.89 どんどんドーナツどーんといこう! - yukicoderパップス=ギュルダンの定理 - Wikipedia これによれば、回転体の体積は、「動いたものの面積」×「重心の移動距離」で求まるドーナツ型は、円を、その円を通らず同一平面上にある直線で回転…

yukicoder No.88 次はどっちだ

問題はこちら No.88 次はどっちだ - yukicoderパスはなかったので、既におかれている石を数えれば良い あるいはまだ石のおかれていないマスを数えれば良い int main(){ int a=0,n=71; char s[7]; scanf("%s",s); if(s[0]=='o')a++; //最後に偶奇で判定するの…

yukicoder No.87 Advent Calendar Problem

問題はこちら No.87 Advent Calendar Problem - yukicoderNが大きいので毎年曜日をチェックしていると間に合わない うるう年は400年周期だが400年間は365*400+97=146097日であり、これは7の倍数なので 結局400年周期でカレンダーは完全に一致する よって400…

yukicoder No.85 TVザッピング(1)

問題はこちら No.85 TVザッピング(1) - yukicoderループを見つける問題なので始点は関係ない 場合分け 少なくとも一方が1の時 他方が2ならYES、3以上ならNO n*mが奇数の時 市松模様による塗り分けを考えれば不可能 n*mが偶数の時 必要なら全体を90度回転させ…

yukicoder No.84 悪の算盤

問題はこちら No.84 悪の算盤 - yukicoderR≠Cのとき 回転一致の仕方は2通り 回転により1-based indexの座標により(i,j)で表されるマスは(R+1-i,C+1-j)に移るので R,Cの少なくとも一方が偶数の時、回転により自身と一致することはない よってR*C/2-1 R,Cの両…

yukicoder No.83 最大マッチング

問題はこちら No.83 最大マッチング - yukicoderできるだけ桁を増やしたほうが大きな数になる ということで1をたくさん作れば良い マッチ棒が奇数本なら、最上位を7とする int main(){ int a; scanf("%d",&a); while(a){ putchar(a%2?'7':'1'); a-=a%2?3:2; …

yukicoder No.82 市松模様

問題はこちら No.82 市松模様 - yukicoderi行j列目について順番に見れば良い 'B'+'W'=153なので153から引くことでもう一方の文字に切り替えることができる int main(){ int a,b,c,i,j; scanf("%d%d ",&a,&b);c=getchar(); for(j=0;j

yukicoder No.80 四角形を描こう

問題はこちら #43377 No.80 四角形を描こう - yukicoder和が一定で積を最大化させる問題 縦+横はfloor(n/2)となる。これをmとおく mが偶数の時(m/2)*(m/2) mが奇数の時((m+1)/2)*((m-1)/2)=(m*m-1)/4=floor(m*m/4)となる n;main(){n=atoi(gets(&n))/2;n=!pri…

yukicoder No.79 過小評価ダメ・ゼッタイ

問題はこちら No.79 過小評価ダメ・ゼッタイ - yukicoder各レベルごとに人数を集計して、最大値をレベルの高い方から調べていく int main(){ int l[7]={},n,i; scanf("%d",&n); while(n--){scanf("%d",&i);l[i]++;} i=6; for(n=6;n;n--)if(l[n]>l[i])i=n; pr…

yukicoder No.77 レンガのピラミッド

問題はこちら No.77 レンガのピラミッド - yukicoder{小さなピラミッド}⊂{大きなピラミッド}なので {小さなピラミッドを作るため動かさないレンガ}⊂{大きなピラミッドを作るため動かさないレンガ} となる。よって可能な限り大きなサイズのピラミッドを作れば…

yukicoder No.75 回数の期待値の問題

問題はこちら No.75 回数の期待値の問題 - yukicoder要求誤差がゆるいのでモンテカルロ int main(){ int s=0,i,t,k; scanf("%d",&k); for(i=0;i<100000;i++){ for(t=k;t;){ //残りマス数tが0でなければ s++; t-=rand()%6+1; //サイコロを振って if(t<0)t=k; …