HDU 中的数学题目

//Made by syx
//Time : 2010年8月14日 16:20:34

//
//

//1071 The area
//可令抛物线表达式为y= a(x-x1)^2+y1;
//直线表达式为y=kx+b;
//面积可通过微积分来计算a(x-x1)^2+y1 -(kx+b)在x2到x3区间内的定积分的值则为面积结果。

#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
double x0,y0,x1,y1,x2,y2,area=0;
scanf("%lf %lf %lf %lf %lf %lf",&x0,&y0,&x1,&y1,&x2,&y2);
area=(y0-y1)*(x2-x1)+(y2-y0)*(x2-x0)/3.0-(y1-y0)*(x1-x0)/3.0-(y2-y1)*(x2-x1)/2.0;
printf("%.2lf\n",area);
}
return 0;
}

/*
//1205 吃糖果
//只要最大的那份比剩下的所有的多2个就no

//

#include <iostream>
using namespace std;

int main()
{
int t;
scanf("%d",&t);
while (t--)
{
int a,n;
__int64 max=0,sum=0;
scanf("%d",&n);
for (int i = 0; i < n; i++)
{
scanf("%d",&a);
sum += a;
if (max<a)
max = a;
}
if (max > sum-max+1)
printf("No\n");
else printf("Yes\n");
}
return 0;
}

*/
/*
//1021 Fibonacci Again
//可以找到规律从第3个开始 每4个循环!
//no no | yes no no no | yes no no no

#include <stdio.h>

int main()
{
int n;
while(scanf("%d", &n) !=EOF)
{
if((n-2)%4) // 根据上述规律
printf("no\n");
else
printf("yes\n");
}
return 0;
}

*/
/*
//1021

#include <stdio.h>
__int64 f[1000000];
int main()
{
f[0] = 7;
f[1] = 11;

int i , n;

for(i=2; i<100000; i++)
f[i] = f[i-1] + f[i-2];
while(scanf("%d",&n) != EOF)
{
if(f[n]%3)
printf("no\n");
else
printf("yes\n");
}
return 0;
}

*/

/*
//1425 sort

//快速排序搞定
#include <stdio.h>
#include <stdlib.h>


int a[1000000];
int cmp(const void *a, const void *b)
{
return *(int*)a - *(int *)b;
}
int main()
{
int n,m, i;
//int *a = new int[1000000];
while(scanf("%d%d",&n,&m) != EOF )
{
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
qsort(a,n,sizeof(int),cmp);
for(i=n-1; i>=(n-m); i--)
{
printf("%d",a[i]);
if(i != (n-m) )
printf(" ");
}
printf("\n");
}
return 0;
}

*/

/*
//1061 Rightmost Digit
//求N^N
//可以找到规律 :0的任何次方都是0 , 1的都是2 ,2的是 2 4 6 8 、、、
//我们可以打表,当然也可以找到这是循环的中的第几次!直接小规模的计算!AC

#include <stdio.h>
int main()
{
//int a[10][4] = {{0,0,0,0},{1,1,1,1},{2,4,8,6},
{3,9,7,1},{4,6,4,6},{5,5,5,5},
{6,6,6,6},{7,9,3,1},{8,4,2,6},
{9,1,9,1}};
int n,num,temp,i,result,t;
scanf("%d",&n);
while(n--)
{
scanf("%d",&num);
temp = num % 10;
t = num %4;
if(!t)
t=4;
result = 1;
for(i=0; i<t; i++)
{
result = result * temp;
result %= 10;
}
printf("%d\n",result);

}
return 0;
}

*/
/*

//1061 test
//可以获得 0 -9 i^i 的值 发现规律
#include <stdio.h>
void print(int m)
{
int result =1 , i;
for(i=1; i<=9; i++)
{
result *= m;
result %= 10;
printf("%2d",result);
}
printf("\n");
}
int main()
{
for(int i=0; i<10; i++)
{
print(i);
}
return 0;
}

*/
/*

//1061
//num 大绝对超时
#include <stdio.h>
int main()
{
int n,num,temp,i,result;
scanf("%d",&n);
while(n--)
{
scanf("%d",&num);
temp = num % 10;
result = 1;
for(i=0; i<num; i++)
{
result = result * temp;
result %= 10;
}
printf("%d\n",result);

}
return 0;
}

*/
/*

//1108 最小公倍数
//记得那个 **公式!
#include <stdio.h>
int gcd(int da,int xiao)
{
int temp;
while (xiao!=0)
{
temp=da%xiao;
da=xiao;
xiao=temp;
}
return(da);
}
int lcm(int m,int n)
{
//return m / gcd(m,n) * n;
return m *n / gcd(m,n);
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n) != EOF)
{
printf("%d\n",lcm(m,n));
}
return 0;
}

*/

/*

//1008 Elevator
//题目理解起来很有难度!
//别人的AC代码
//理解起来很那个啊!
#include <stdio.h>

int main()
{
int n , total , next , pro ;

while( scanf( "%d" , &n ) , n )
{
pro = 0 ;
total = 0 ;
while( n -- )
{
scanf( "%d" , &next ) ;
if( next > pro )
total += ( next - pro ) * 6 + 5 ;
else
total += ( pro - next ) * 4 + 5 ;
pro = next ;
}
printf("%d\n" , total ) ;
}
return 0 ;
}

*/

posted @ 2010-08-14 16:32  BuildNewApp  阅读(216)  评论(0编辑  收藏  举报