<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:image="http://pirl.org/rss/1.0/modules/image/"
 xmlns:admin="http://webns.net/mvcb/"
 xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel rdf:about="http://blog.livedoor.jp/masa_charcoal/">
<link rel="hub" href="http://pubsubhubbub.appspot.com" />
<title>Masa's Studio＠ICPC初心者。</title>
<link>http://blog.livedoor.jp/masa_charcoal/</link>
<description>何か、読者が限られそうな記事はこちらにまとめようと思います。
簡単な問題ばかりになってしまいそうですが、解けた問題だったり解けなかった問題だったりを書き込んで生きます。生きるんです。

主に自分メモです。
</description>
<dc:language>ja</dc:language>
<admin:generatorAgent rdf:resource="http://blog.livedoor.com/?v=2.0" />
<image rdf:resource="http://image.profile.livedoor.jp/icon/masa_charcoal_60.gif"/>
<items>
 <rdf:Seq>
  <rdf:li rdf:resource="http://blog.livedoor.jp/masa_charcoal/archives/51410501.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/masa_charcoal/archives/51403076.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/masa_charcoal/archives/51403073.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/masa_charcoal/archives/51403070.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/masa_charcoal/archives/51311903.html" />
 </rdf:Seq>
</items>
</channel>
<image rdf:about="http://image.profile.livedoor.jp/icon/masa_charcoal_60.gif">
 <title>Masa's Studio＠ICPC初心者。</title>
 <link>http://blog.livedoor.jp/masa_charcoal/</link>
 <url>http://image.profile.livedoor.jp/icon/masa_charcoal_60.gif</url>
</image>
<item rdf:about="http://blog.livedoor.jp/masa_charcoal/archives/51410501.html">
<title>#0012 A Point in a Triangle</title>
<link>http://blog.livedoor.jp/masa_charcoal/archives/51410501.html</link>
<description>平面上に (x1, y1), (x2, y2), (x3, y3) を頂点とした三角形と点 P(xp, yp) があります。点 P が三角形の内部にあるなら YES、三角形の外部にあるなら NO を出力して終了するプログラムを作成して下さい。

なお、与える点 P は三角形の頂点や辺の上にはないものとし、x1, ...</description>
<dc:creator>masa_charcoal</dc:creator>
<dc:date>2008-11-20T07:07:13+09:00</dc:date>
<dc:subject></dc:subject>
<content:encoded><![CDATA[平面上に (x1, y1), (x2, y2), (x3, y3) を頂点とした三角形と点 P(xp, yp) があります。点 P が三角形の内部にあるなら YES、三角形の外部にあるなら NO を出力して終了するプログラムを作成して下さい。<br>
<br>
なお、与える点 P は三角形の頂点や辺の上にはないものとし、x1, y1, x2, y2, x3, y3 xp, yp は、それぞれ -100 以上 100 以下とします。<br>
Input<br>
<br>
複数のデータセットが与えられます。各データセットの形式は以下のようになっています。<br>
<br>
x1 y1 x2 y2 x3 y3 xp yp<br>
<br>
与えられる入力は全て実数です。入力の最後まで処理して下さい。<br>
Output<br>
<br>
書くデータセットに対して、YES または NO を１行に出力して下さい。<br>
Sample Input<br>
<br>
0.0 0.0 2.0 0.0 2.0 2.0 1.5 0.5<br>
0.0 0.0 1.0 4.0 5.0 3.0 -1.0 3.0<br>
<br>
Output for the Sample Input<br>
<br>
YES<br>
NO<br>
<br>
-----------------------------------------------------------------<br>
<br>
#include<iostream><br>
#include <cstdio><br>
using namespace std;<br>
<br>
typedef struct POINT_tag//座標の構造体<br>
 {<br>
   float x;//x座標<br>
   float y;//y座標<br>
 }POINT_t;<br>
<br>
typedef struct LINE_tag//線分を格納する構造体<br>
{<br>
  POINT_t a;//始点<br>
  POINT_t b;//終点<br>
<br>
}LINE_t;<br>
<br>
typedef struct TRIANGLE_tag//三角形として格納する構造体<br>
{<br>
  POINT_t a;<br>
  POINT_t b;<br>
  POINT_t c;<br>
}TRIANGLE_t;<br>
<br>
int side(POINT_t *p,LINE_t *e){　//線がどっち側にあるのか判定<br>
  float n;<br>
    <br>
  POINT_t p1 = *p; //pのポインタをp1に設定<br>
  POINT_t p2 = e->a;//有向線分eの始点<br>
  POINT_t p3 = e->b;//有向線分eの終点<br>
  <br>
  n = p1.x * (p2.y - p3.y) + p2.x *  (p3.y - p1.y) + p3.x * (p1.y -p2.y);//有効線分の外積を求める<br>
  if(n>0) return 1;//右<br>
  else if(n<0)return -1;//左<br>
  else return 0;//線上<br>
<br>
}<br>
int PointInTriangle(POINT_t *p,TRIANGLE_t *t){//三角形の中に点が入ってるかどうかを確認する<br>
  LINE_t ab,bc,ca;<br>
<br>
  ab.a = t->a;<br>
  ab.b = t->b;<br>
  <br>
  bc.a = t->b;<br>
  bc.b = t->c;<br>
  <br>
  ca.a = t->c;<br>
  ca.b = t ->a;<br>
  <br>
  const int pab = side(p,&ab);//有向線分abから見た点pの方向<br>
  const int pbc = side(p,&bc);//有向線分bcから見た点pの方向<br>
  const int pca = side(p,&ca);//有向線分caから見た点pの方向<br>
  // 三角形の内側にあれば正<br>
  <br>
  if ( (0 < pab) && (0 < pbc) && (0 < pca) )<br>
    return 1; // 点 p が常に右手にある（時計回り）<br>
  if ( (0 > pab) && (0 > pbc) && (0 > pca) )<br>
    return 1; // 点 p が常に左側にある（反時計回り）<br>
  <br>
  else return 0;<br>
}<br>
<br>
//たぶん点を増やしたり減らしたりしたらいろいろな図形に代用できる<br>
<br>
<br>
int main(void){<br>
<br>
	POINT_t tri1,inp;<br>
<br>
	//求めたいトライアングル.求める点.x,yどちらの座標か<br>
  while(EOF != scanf("%f %f %f %f %f %f %f %f",&tri1.a.x,&tri1.a.y,&tri1.b.x,&tri1.b.y,&tri1.c.x,&tri1.c.y,&inp.x,&inp.y)){<br>
	  if(1==PointInTriangle(&inp,&tri1)){<br>
		  printf("YES\n");<br>
	  }else{<br>
		  printf("NO\n");<br>
	  }<br>
  }<br>
  return 0;<br>
}<br>
-------------------------------------------------------------<br>

<img src="http://counter2.blog.livedoor.com/c?ro=1&act=rss&output=no&id=1463332&name=masa_charcoal&pid=51410501" width="1" height="1" />
]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/masa_charcoal/archives/51403076.html">
<title>#0014 Integral</title>
<link>http://blog.livedoor.jp/masa_charcoal/archives/51403076.html</link>
<description>Integral

+問題---------------------------------------------------------
という３つの線で囲まれる部分の面積を求める方法について考えます。高校で学習する積分を利用するとその面積は 72000000 であるとわかりますが、下図のような多数の長方形の面積の和を求める...</description>
<dc:creator>masa_charcoal</dc:creator>
<dc:date>2008-10-31T02:29:42+09:00</dc:date>
<dc:subject></dc:subject>
<content:encoded><![CDATA[Integral<br>
<br>
+問題---------------------------------------------------------<br>
という３つの線で囲まれる部分の面積を求める方法について考えます。高校で学習する積分を利用するとその面積は 72000000 であるとわかりますが、下図のような多数の長方形の面積の和を求めることによって、それに極めて近い値を得ることができます。<br>
<br>
長方形の横の長さを d とおくと、ｓの近似的な値は<br>
<br>
  縦の長さが f( d ) で横の長さが d である長方形の面積<br>
+ 縦の長さが f( 2d ) で横の長さが d である長方形の面積<br>
+ 縦の長さが f( 3d ) で横の長さが d である長方形の面積<br>
...<br>
+ 縦の長さが f( 600 - d ) で横の長さが d である長方形の面積<br>
<br>
です。d を小さくすればするほど、この値は 72000000 に近づきます。600 の約数 d を入力として受け取り、上記の方式で求めた近似的な面積を出力して終了するプログラムを作成して下さい。<br>
<br>
+Input-----------------------------------------------------------<br>
<br>
複数のデータセットが与えられます。各データセットには整数 d が一行に与えられます。入力の最後まで処理して下さい。<br>
<br>
+Output-----------------------------------------------------------<br>
<br>
各データセットに対して、近似的な面積 （整数）を１行に出力して下さい。<br>
<br>
+Sample Input-----------------------------------------------------<br>
<br>
20<br>
10<br>
<br>
+Output for the Sample Input--------------------------------------<br>
<br>
68440000<br>
70210000<br>
----------------------------------------------------------------<br>
<br>
高校の情報処理検定とかに出てきそうな問題でした。<br>
ひたすら四角形の面積を合計していきます。<br>
読解力が無くてtate変数を2回掛ける必要があるのに気づいたのは<br>
内緒のお話。<br>
-----------------------------------------------------------------<br>
<br>
#include &lt; stdio.h &gt;<br>
int main(void){<br>
  long tate,inp,sum=0,count=0;<br>
  while(EOF != scanf("%ld",&inp)){<br>
    tate=600;<br>
    sum=0;<br>
    while(tate>0){<br>
      printf("%d\n",tate);<br>
      tate-=inp;<br>
      sum+=inp*tate*tate;<br>
    }<br>
    printf("%ld\n",sum);<br>
  }<br>
  return 0;<br>
}<br>
<br>
<br>

<img src="http://counter2.blog.livedoor.com/c?ro=1&act=rss&output=no&id=1463332&name=masa_charcoal&pid=51403076" width="1" height="1" />
]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/masa_charcoal/archives/51403073.html">
<title>#0008 Sum of 4 Integers</title>
<link>http://blog.livedoor.jp/masa_charcoal/archives/51403073.html</link>
<description>Sum of 4 Integers
＋問題--------------------------------------------------

50 以下の正の整数 n を入力し、0 ～ 9 の範囲の整数 a, b, c, d の組で

        a + b + c + d = n

を満たすものの組み合わせ数を出力するプログラムを作成して下さい。

例えば、...</description>
<dc:creator>masa_charcoal</dc:creator>
<dc:date>2008-10-31T02:24:22+09:00</dc:date>
<dc:subject></dc:subject>
<content:encoded><![CDATA[Sum of 4 Integers<br>
＋問題--------------------------------------------------<br>
<br>
50 以下の正の整数 n を入力し、0 ～ 9 の範囲の整数 a, b, c, d の組で<br>
<br>
        a + b + c + d = n<br>
<br>
を満たすものの組み合わせ数を出力するプログラムを作成して下さい。<br>
<br>
例えば、n が 35 のとき、(a, b, c, d) は (8,9,9,9)、(9,8,9,9)、(9,9,8,9)、(9,9,9,8) の 4 通りですので、答えは 4 となります。<br>
<br>
＋Input－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br>
<br>
複数のデータセットが与えられます。各データセットに n が１行に与えられます。入力の最後まで処理して下さい。<br>
<br>
+Output----------------------------------------------------------<br>
<br>
各データセットごとに、a, b, c, d の組み合わせ個数を１行に出力して下さい。<br>
<br>
+Sample Input-----------------------------------------------------<br>
35<br>
1<br>
<br>
+Output for the Sample Input--------------------------------------<br>
<br>
4<br>
4<br>
<br>
-----------------------------------------------------------------<br>
<br>
<br>
なんとか、無事解けてくれました。<br>
効率は悪いでしょうが、計算量はそこまで多くないので総当たり大作戦で。<br>
インプットごとに0000～9999までを調べて比較します。<br>
36以上は無理なので無視で。<br>
----------------------------------------------------<br>
<br>
#include &lt;stdio.h&gt;<br>
<br>
int main(void){<br>
  int a,i1,i2,i3,i4,ans;<br>
<br>
  while(EOF != scanf("%d",&a)){<br>
    ans=0;<br>
    if(a>36){　//9*4=36 これ以上の値はありえないので出たら全部０<br>
      ans=0;<br>
    }else{<br>
      for(i4=9;i4>=0;i4--){<br>
	for(i3=9;i3>=0;i3--){<br>
	  for(i2=9;i2>=0;i2--){<br>
	    for(i1=9;i1>=0;i1--){      <br>
	    if((i1+i2+i3+i4)==a)ans++;//総当たりで検索してaと同じになったらansに1を足す。<br>
	    }<br>
	  }<br>
	}<br>
      }<br>
    }<br>
    printf("%d\n",ans);//ansを出力<br>
  }<br>
  return 0;<br>
}<br>

<img src="http://counter2.blog.livedoor.com/c?ro=1&act=rss&output=no&id=1463332&name=masa_charcoal&pid=51403073" width="1" height="1" />
]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/masa_charcoal/archives/51403070.html">
<title>#004 　Simultaneous Equation</title>
<link>http://blog.livedoor.jp/masa_charcoal/archives/51403070.html</link>
<description>連立方程式を解こう。という問題です。

うむむ。サンプルインプットは通るのですが、
なかなかうまいこと通ってくれません。

----------------------------------------------------
連立方程式

        ax + by = c
        bx + ey = f

の解、x, y を出力し...</description>
<dc:creator>masa_charcoal</dc:creator>
<dc:date>2008-10-31T02:12:50+09:00</dc:date>
<dc:subject></dc:subject>
<content:encoded><![CDATA[連立方程式を解こう。という問題です。<br>
<br>
うむむ。サンプルインプットは通るのですが、<br>
なかなかうまいこと通ってくれません。<br>
<br>
----------------------------------------------------<br>
連立方程式<br>
<br>
        ax + by = c<br>
        bx + ey = f<br>
<br>
の解、x, y を出力して終了するプログラムを作成して下さい。a, b, c, d, e, f はそれぞれ、 -1000 以上 1000 以下の実数とし、連立方程式の解が一意に存在するように与えれれるものとします。 <br>
----------------------------------------------------------<br>
Input<br>
<br>
複数のデータセットが与えられます。入力の最後まで処理して下さい。１つのデータセットが１行に与えられます。１つのデータセットに a, b, c, d, e, f が１つのスペースで区切られて与えられます。<br>
-----------------------------------------------------------<br>
Output<br>
<br>
各データセットに対して、x, y を１つのスペースで区切って１行に出力して下さい。各値は小数点以下第３位まで出力して下さい。小数点以下第４位を四捨五入して下さい。<br>
-------------------------------------------------------------<br>
Sample Input<br>
<br>
1 2 3 4 5 6<br>
2 -1 -2 -1 -1 -5<br>
<br>
Output for the Sample Input<br>
<br>
-1.000 2.000<br>
1.000 4.000<br>
---------------------------------------------------------------<br>
<br>
<br>
で、組んでみたのがこれ。<br>
サンプルは通るということは小数点の計算がうまくできていないんでしょうかねー。<br>
後日、組み直して見ようと思います。<br>
---------------------------------------------------------------<br>
#include &lt;stdio.h&gt;<br>
int main(void){<br>
  int i;<br>
  double a[3],b[3],s[3],ans[3],cb[3],ca[3];<br>
  while(EOF != scanf("%lf %lf %lf %lf %lf %lf",&a[0],&a[1],&a[2],&b[0],&b[1],&b[2])){<br>
    for(i=0;i < 3 ; i++)cb[i]=b[i]*a[0];<br>
    for(i=0;i < 3 ; i++)ca[i]=b[0]*a[i];    <br>
    for(i=0;i < 3 ; i++)s[i]=ca[i]-cb[i];<br>
    ans[0]= s[2]/s[1];<br>
    ans[1]= (b[2]-(b[1]*ans[0]))/b[0];<br>
    for(i=0;i<3;i++){<br>
      if(ans[i]<0)ans[i]=(int)(ans[i]*1000-0.5);<br>
      else ans[i]=(int)(ans[i]*1000+0.5);<br>
    }<br>
    printf("%.3lf %.3lf\n",ans[1]/1000,ans[0]/1000);<br>
  }<br>
  return 0;<br>
}
<img src="http://counter2.blog.livedoor.com/c?ro=1&act=rss&output=no&id=1463332&name=masa_charcoal&pid=51403070" width="1" height="1" />
]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/masa_charcoal/archives/51311903.html">
<title>Test</title>
<link>http://blog.livedoor.jp/masa_charcoal/archives/51311903.html</link>
<description>テスト投稿</description>
<dc:creator>masa_charcoal</dc:creator>
<dc:date>2008-03-25T22:50:50+09:00</dc:date>
<dc:subject>雑記</dc:subject>
<content:encoded><![CDATA[テスト投稿
<img src="http://counter2.blog.livedoor.com/c?ro=1&act=rss&output=no&id=1463332&name=masa_charcoal&pid=51311903" width="1" height="1" />
]]>
</content:encoded>
</item>

</rdf:RDF>
