メモ

yukicoderでゆるふわgolf

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

yukicoder No.123 カードシャッフル

問題はこちら No.123 カードシャッフル - yukicoder愚直にシミュレーション int main(){ int m=51,a[51],t; while(m--)a[m]=m; //1-based scanf("%*d%d",&m); while(m--){ scanf("%d",&t); a[0]=a[t]; //t番目の札が一番上にいく while(t--)a[t+1]=a[t]; //t…

yukicoder No.118 門松列(2)

問題はこちら No.118 門松列(2) - yukicoder竹は互いに区別するので、例えば長さが相異なるi,j,kである竹が各a,b,c本あれば、求める値はa*b*cになることがすぐ分かる 竹の長さは100以下なので、各長さの竹が何本あるかを調べて合計を求めれば良い int main()…

yukicoder No.116 門松列(1)

問題はこちら No.116 門松列(1) - yukicoder前から順に調べていくだけ int main(){ int a,b,c,n,s=0; scanf("%d%d%d",&n,&a,&b); n-=2; while(n--){ scanf("%d",&c); if(a-c&&(a

yukicoder No.115 遠足のおやつ

問題はこちら No.115 遠足のおやつ - yukicoder出力が-1になるケースは2パターン存在する ・高い方からK個買ってもD円に満たない場合 ・安い方からK個買ってもD円を超える場合 (K>Nであるようなものは必ずどちらかに抵触する) 逆にこれらに触れなければ条件…

yukicoder No.113 宝探し

問題はこちら No.113 宝探し - yukicoder1文字ずつ処理するだけ int main(){ int a=0,b=0,i; char s[110]; gets(s); for(i=0;s[i];i++){ if(s[i]=='E')a++; else if(s[i]=='W')a--; else if(s[i]=='N')b++; else b--; } printf("%f",hypot(a,b)); return 0; …

yukicoder No.112 ややこしい鶴亀算

問題はこちら No.112 ややこしい鶴亀算 - yukicoder与えられたa[i]たちを全て合計すると、全員の足の数のN-1倍になる (∵全員が自分以外のN-1人に数えられるため) よってこれにより普通の鶴亀算に帰着することができた int main(){ int n,m,x,s=0; scanf("%…

yukicoder No.111 あばばばば

問題はこちら No.111 あばばばば - yukicoderサンプルを見ればなんとなく((L-1)/2)^2だろうとの予測はつくけれど一応考察 長さ奇数の部分列は必ず回文になり、逆に回文ならその長さは奇数 長さLの文字列の中に長さMの文字列はL-M+1個あるので Σ[i=0...(L-1)/…

yukicoder No.106 素数が嫌い!2

問題はこちら No.106 素数が嫌い!2 - yukicodera[i]にiがいくつの素因数を持つかを保存していく int main(){ int a[2000010]={},n,k,i,j,s; scanf("%d%d",&n,&k); for(i=2;i<=n;i++){ if(!a[i])for(j=i;j<=n;j+=i)a[j]++; //もしa[i]が0なら、iは素数なので…

yukicoder No.105 arcの六角ボルト

問題はこちら No.105 arcの六角ボルト - yukicoder逆三角関数を使えば良さそうだということはすぐに分かるのだが abs(x)>1のケースが紛れているのでacos(x)とするとWAを食らう atan2を使う int main(){ double x,y,t; int n,i; scanf("%d",&n); while(n--){ …

yukicoder No.104 国道

問題はこちら No.104 国道 - yukicoder日本語で説明するのが難しいが、二分木に上から順に番号を振っているので、 n号線は2n号線と(2n+1)号線に分岐する ということで、1文字目から順に処理していく int main(){ int a=1,i; char s[40]; gets(s); for(i=0;s[…

yukicoder No.102 トランプを奪え

問題はこちら No.102 トランプを奪え - yukicoder「各山の最後のカードを取った場合、相手の手札の半分(切り上げ)を奪う」 「すべての山が無くなったとき、手札が多いほうが勝ち」 という2つのルールから 「最後の山の最後のカードを取れば勝ち」 である…

yukicoder No.101 ぐるぐる!あみだくじ!

問題はこちら No.101 ぐるぐる!あみだくじ! - yukicoderyukicoder No.100 直列あみだくじ - メモで以前述べたとおり置換は巡回置換の積でかける この時これらの位数(=長さ)の最小公倍数が答えとなることはあきらか int gcd(int a,int b){return b?gcd(b,a%…