#include <stdio.h>
#include <math.h>
#define BUNKATU 10000 /*分割数を定義*/
int main(void) {
double jouteiy,kateiy,jouteix,kateix,I,MENSEKI,MENSEKI1,MENSEKI2;/*変数を定義*/
kateiy = 1;/*台形の下底部分*/
kateix = 0;/*台形の上底部分*/
I = 1.0/BUNKATU;/*台形一つ分の高さ*/
MENSEKI1 = 0;/*面積(台形を足し合わせた部分)*/
int i;
for (i = 1;i <= BUNKATU-1;i++) {
jouteix = i * I;
jouteiy
= sqrt(1 - jouteix
* jouteix
);
MENSEKI1 += ((kateiy + jouteiy) * I / 2);
kateiy = jouteiy;
kateix = jouteix;
}
MENSEKI2
= I
*sqrt(1-(BUNKATU
-1)*(BUNKATU
-1))/2;MENSEKI = MENSEKI1+MENSEKI2;
printf ("円周率:%f\n",BUNKATU
,MENSEKI
*4);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNkZWZpbmUgQlVOS0FUVSAxMDAwMCAgLyrliIblibLmlbDjgpLlrprnvqkqLwogCmludCBtYWluKHZvaWQpIHsKZG91YmxlIGpvdXRlaXksa2F0ZWl5LGpvdXRlaXgsa2F0ZWl4LEksTUVOU0VLSSxNRU5TRUtJMSxNRU5TRUtJMjsvKuWkieaVsOOCkuWumue+qSovCiAKa2F0ZWl5ID0gMTsvKuWPsOW9ouOBruS4i+W6lemDqOWIhiovCmthdGVpeCA9IDA7Lyrlj7DlvaLjga7kuIrlupXpg6jliIYqLwpJID0gMS4wL0JVTktBVFU7Lyrlj7DlvaLkuIDjgaTliIbjga7pq5jjgZUqLwpNRU5TRUtJMSA9IDA7LyrpnaLnqY3vvIjlj7DlvaLjgpLotrPjgZflkIjjgo/jgZvjgZ/pg6jliIbvvIkqLwogCmludCBpOyAKIApmb3IgKGkgPSAxO2kgPD0gQlVOS0FUVS0xO2krKykgewpqb3V0ZWl4ID0gaSAqIEk7CmpvdXRlaXkgPSBzcXJ0KDEgLSBqb3V0ZWl4ICogam91dGVpeCk7CiAKTUVOU0VLSTEgKz0gKChrYXRlaXkgKyBqb3V0ZWl5KSAqIEkgLyAyKTsKIAprYXRlaXkgPSBqb3V0ZWl5OwprYXRlaXggPSBqb3V0ZWl4Owp9CiAKTUVOU0VLSTIgPSBJKnNxcnQoMS0oQlVOS0FUVS0xKSooQlVOS0FUVS0xKSkvMjsKTUVOU0VLSSA9IE1FTlNFS0kxK01FTlNFS0kyOwogCnByaW50ZiAoIuWGhuWRqOeOhzolZlxuIixCVU5LQVRVLE1FTlNFS0kqNCk7CiAKcmV0dXJuIDA7Cn0KIAo=