没啥好说的,直接上代码
// <lib> -*- C++ -*-
// Copyright (C) csdn.net-某某老六
// This is a C++ Library header.
#ifndef math666
#define math666
#include <math.h>
#include <algorithm>
namespace math666
{
/* DO NOT EDIT ! */
#define mFILE_VERSION "1.0.1.0"
#define mFILE_DESCRIPTION "Developed using the Dev-C++ IDE"
#define mLEGAL_COPYRIGHT "Copyright (C) csdn.net-某某老六"
#define mORIGINAL_FILENAME "lib"
#define mPRODUCT_VERSION "1.0.1.0"
const int PI=3.14159265358979323846;
double derta(double a,double b,double c){return b*b-4*a*c;}//Δ,不建议,不是分式
//二次函数没有,因为是 ±√Δ
double root(double _X,double _Y){return pow(_X,1/_Y);}//开根号
double root(int _X,double _Y){return pow((double)_X,1/_Y);}//开根号
double root(double _X,int _Y){return pow(_X,1/(double)_Y);}//开根号
double root(int _X,int _Y){return pow((double)_X,1/(double)_Y);}//开根号
double deci(double _X){return _X-ceil(_X);}//取小数
int __lcm(int _X,int _Y){return _X*_Y/std::__gcd(_X,_Y);}//最小公倍数
long long sigma(int i,int n,int x[]){long long ans=0;for(;i<=n;i++)ans+=x[i];return ans;}//∑
struct func//函数
{
double k;
double b;
double h;
double a;
double c;
};
func one_getkb(double X1,double X2,double Y1,double Y2){
func kb;
kb.k=(Y2-Y1)/(X2-X1);
kb.b=Y1-kb.k*X1;
return kb;
}
func two_c1(double A,double B,double C){
func kbh;
kbh.k=A,kbh.h=-B/2.0*A,kbh.b=C-B*B/4.0/A;
return kbh;
}//y=ax^2+bx+c => y=k(x-h)^2+b
func two_c2(double K,double H,double B){
func abc;
abc.a=K,abc.b=-2.0*K*H,abc.c=K*H*H+B;
return abc;
}//y=ax^2+bx+c <= y=k(x-h)^2+b
double two_getder_abc(double A,double B,double C){return B*B-4.0*A*C;}
double two_getder_kbh(double K,double H,double B){return 4.0*B;}
func two_getabc(double X_D,double Y_D,double X,double Y){
func abc;
abc.a=(Y-Y_D)/(X*X-X_D*X_D);
abc.b=-2.0*a*X_D;
abc.c=Y_D-a*X_D*X_D;
return abc;
}//含有顶点
func two_getkbh(double X_D,double Y_D,double X,double Y){
func abc2,kbh;
abc2=two_getabc(X_D,Y_D,X,Y);
kbh=two_c1(abc2.a,abc2.b,abc2.c);
return kbh;
}
/*
void two_getabc(double X1,double X2,double X3,double Y1,double Y2,double Y3){;}
void two_getkhb(double X1,double X2,double X3,double Y1,double Y2,double Y3){;}
*老子不会
*/
double cir_area(double _R){return _R*_R*PI;}//圆
double cir_area(int _R){return (double)_R*(double)_R*PI;}//圆
double cir_per(double _R){return 2.0*_R*PI;}
double cyl_size(double _R,double _H){return cir_area(_R)*_H;}//圆柱
double cyl_surf(double _R,double _H){return 2.0*cir_area(_R)+_H*cir_per(_R);}
double cone_size(double _R,double _H){return cyl_size(_R,_H)/3.0;}// 圆锥
double cone_surf(double _R,double _H){return cir_area(_R)+cir_per(_R)*sqrt(_R*_R+_H*_H)/2.0;}
double tai_size(double _r,double _R,double _H){return (_r*_r+_r*_R+_R*_R)*PI*_H/3.0;}//圆台
double tai_surf(double _r,double _R,double _H){return PI*(_r*_r+_R*_R+(_r+_R)*(_H*_H+(_R-_r)*(_R-_r)));}
double ball_size(double _R){return cir_area(_R)*_R*4.0/3.0;}//球体
double ball_surf(double _R){return cir_area(_R)*4.0;}
double cdeg(int deg){return ((double)(deg%180))*PI/180;}
double csin(int deg){return sin(cdeg(deg));}
double ccos(int deg){return cos(cdeg(deg));}
double ctan(int deg){return tan(cdeg(deg));}
double ccot(int deg){return 1/(tan(cdeg(deg)));}
double csec(int deg){return 1/(sin(cdeg(deg)));}
double ccsc(int deg){return 1/(sin(cdeg(deg)));}
double sin_law(double a,int A,int B){return a/csin(A)*csin(B);}
double cos_law(double b,double c,int A){return sqrt(b*b+c*c-2.0*b*c*ccos(A));}
double SSS(double a,double b,double c){if(a+b>=c&&b+c>=a&&a+c>=b)return sqrt((a+b+c)/2.0*((a+b+c)/2.0-a)*((a+b+c)/2.0-b)*((a+b+c)/2.0-c));}//海伦公式
double SAS(double a,int B,double c){return a*csin(B)*c/2.0;}
double AAS(int A,int B,double a){
int C=180-A-B;
double b=a/csin(A)*csin(B);
return SAS(a,C,b);
}
double ASA(int A,double c,int B){
int C=180-A-B;
double a=c/csin(C)*csin(A);
return SAS(a,B,c);
}
double HL(double a,double c){
double b=sqrt(abs(c*c-a*a));
return SSS(a,b,c);
}
}
#endif
//注:不要更改任何代码(分行也算)!更改代码可能影响准确率!
最后再说一下:
不得以任何形式转载!!!