hdu 4447 Yuanfang, What Do You Think?
2013-08-28 13:59
253 查看
思路:
这题有个结论也可以自己归纳:
对于给定的n,其约数用pi表示
T(n)=T(p1)T(p2)……T(pn)T(n')
其中T(n')是这个式子所独有的也就是
T(n')=(x^n-1)/T(p1)/T(p2)……/T(pn)
代码如下:
View Code
这题有个结论也可以自己归纳:
对于给定的n,其约数用pi表示
T(n)=T(p1)T(p2)……T(pn)T(n')
其中T(n')是这个式子所独有的也就是
T(n')=(x^n-1)/T(p1)/T(p2)……/T(pn)
代码如下:
#include<iostream> #include<stdio.h> #include<algorithm> #include<iomanip> #include<cmath> #include<cstring> #define MAX 1102 using namespace std; struct pol { int bit[MAX],len; void init(){memset(bit,0,sizeof(bit));len=1;} }p[MAX]; int ans[MAX]; int com(pol a,pol b) { if(a.len!=b.len)return a.len-b.len; for(int i=a.len-1;i>=0;i--) if(a.bit[i]!=b.bit[i]){ if(abs(a.bit[i])!=abs(b.bit[i])) return abs(a.bit[i])-abs(b.bit[i]); return a.bit[i]-b.bit[i]; } return 0; } bool cmp(int a,int b) { return com(p[a],p[b])<0; } void shows(int n) { if(n>1) printf("x^%d",n); else if(n==1) printf("x"); } void show(pol a) { int x; printf("("); for(int i=a.len-1;i>=0;i--){ if(a.bit[i]==0) continue; if(i==0){ if(a.bit[i]>0) printf("+%d",a.bit[i]); else printf("%d",a.bit[i]); continue; } if(i==a.len-1){ if(a.bit[i]<0) printf("-"); x=abs(a.bit[i]); if(x>1) printf("%d",x); shows(i); continue; } if(a.bit[i]<0) printf("-"); else printf("+"); x=abs(a.bit[i]); if(x>1) printf("%d",x); shows(i); } printf(")"); } pol Div(pol a,pol b) { pol c; c.init(); for(int i=a.len-1;i>=0;i--) if(a.bit[i]){ c.bit[i-b.len+1]=a.bit[i]; int cnt=0,cur=a.bit[i]; for(int j=b.len-1;j>=0;j--){ a.bit[i-cnt]-=cur*b.bit[j]; cnt++; } } c.len=a.len; while(c.len>1&&c.bit[c.len-1]==0) c.len--; return c; } int main(){ p[1].bit[0]=-1; p[1].bit[1]=1; p[1].len=2; for(int i=2;i<MAX;i++){ p[i].init(); p[i].bit[i]=1;p[i].bit[0]=-1; p[i].len=i+1; p[i]=Div(p[i],p[1]); for(int j=2;j*j<=i;j++){ if(i%j==0){ p[i]=Div(p[i],p[j]); if(j*j!=i) p[i]=Div(p[i],p[i/j]); } } } int n,m; while(scanf("%d",&n)&&n){ if(n==1){ puts("x-1"); continue; } m=0; for(int i=1;i*i<=n;i++){ if(n%i==0){ ans[m++]=i; if(i*i!=n) ans[m++]=n/i; } } sort(ans,ans+m,cmp); for(int i=0;i<m;i++) show(p[ans[i]]); printf("\n"); } return 0; }
View Code
相关文章推荐
- HDU 4447 Yuanfang, What Do You Think? <多项式的比较以及相除>
- hdu 4447 Yuanfang, What Do You Think?
- HDU 4447 Yuanfang, What Do You Think? 多项式分解
- HDU4447----Yuanfang, What Do You Think?----多项式的比较以及相除
- Yuanfang,what do you think ?
- Yuanfang,what do you think ? SDUT 2448
- What do you think is the role of parents in preventing crime amongst young people?
- What do you think the coming adidas NMD Singapore
- PLM vs. BPM or What do you think about IBM PDIF?
- What do you think
- Employing a tester: What do you think makes a good employee?
- What do you think is the most important skill every programmer should posses?(转)
- It is said that wars in the 21st century will be fought over water. Do you agree? What do you think can be done now to alleviate
- What do you think about this itinerary?
- Will you pity a beggar ? What do you think of them ?
- HDU 1075 What Are You Talking About (字典树)
- What 10 things should you do every day to improve your life?
- Man,what do you know?
- 自己想要的到底是什么?what do you want?
- hdu 1075 What Are You Talking About(字典树)