分圆多项式
问题在于精度貌似出了一些奇怪的问题。。。
【输出也写的有问题QAQ】
完全不会处理了 加上全网没有题解T^T
挖个坑以后补。。
#include#include #include #include #define inf 20021225#define ll long long#define mxn 10100#define pa pair #define mp make_pair#define db long doubleusing namespace std;int d[mxn][mxn];int m[mxn];bool vis[mxn];// x -> n y -> powtemplate inline T labs( const T & x ){return x<0?-x:x;} template inline int sgn( const T & x ){return x<0?-1:(x?1:0);} inline int d_round( const db & x ){return (int)(sgn(x)*(labs(x)+0.50001));}const db pi=acos(-1.0);struct complex{ db x,y; complex(){} complex(db _x,db _y){x=_x,y=_y;}};complex tmp[mxn],fin[mxn];complex operator +(complex a,complex b){return complex(a.x+b.x,a.y+b.y);}complex operator -(complex a,complex b){return complex(a.x-b.x,a.y-b.y);}complex operator *(complex a,complex b){return complex(a.x*b.x-a.y*b.y,a.x*b.y+b.x*a.y);}int gcd(int x,int y){ return y==0?x:gcd(y,x%y);}void calc(int n){ if(vis[n]) return; vis[n]=1; for(int i=0;i 1;j--) { if(d[i][j]) { if(!f) printf("("),f=1; if(d[i][j]<-1) printf("%dx^%d",d[i][j],j); else if(abs(d[i][j])==1) { if(f==1) printf("x^%d",j); else if(d[i][j]==-1) printf("-x^%d",j); else printf("+x^%d",j); } else printf("+%dx^%d",d[i][j],j); f=2; } } if(d[i][1]) { if(!f) printf("("),f=1; if(d[i][1]<-1) printf("%dx",d[i][1]); else if(abs(d[i][1])==1) { if(f==1) printf("x"); else if(d[i][1]==-1) printf("-x"); else printf("+x"); } else printf("+%dx",d[i][1]); } if(d[i][0]>0) printf("+%d)",d[i][0]); else printf("%d)",d[i][0]); } } printf("\n"); //printf("%lf\n",cos(4.0/11.0*pi)+cos(6.0/11.0*pi));}int n;int main(){ vis[1]=vis[2]=1; m[1]=m[2]=2; d[1][1]=d[2][1]=1; d[1][0]=-1;d[2][0]=1; while(scanf("%d",&n)&&n) get(n); return 0;}