#include <stdio.h> #include <string.h> int num[800],cop[800]; unsigned long long a[63]={1}; void multi(int s,int l) { int m=0,c,i,j,flag=1; memset(a,0,sizeof(a)); a[0]=1; for(i=s;i<=l;i++) if(num[i-1]==0) {printf("0/n");return;} for(i=s;i<=l;i++) {if(num[i-1]<0) flag*=-1; c=0; for(j=0;j<=m;j++) { a[j]=a[j]*cop[i-1]+c; c=a[j]/10000000000000; a[j]%=10000000000000; } if(c>0) {m++;a[m]=c;} } if(flag==-1) printf("-"); printf("%llu",a[m]); for(i=m-1;i>=0;i--) printf("%13.13llu",a[i]); printf("/n"); } int main() {int m,n,t,_l,_s,i; while(scanf("%d%d",&n,&m)!=EOF) {t=0; while(n--) scanf("%d",&num[t++]); for(i=0;i<t;i++) cop[i]=num[i]>=0?num[i]:-num[i]; while(m--) { scanf("%d%d",&_s,&_l); multi(_s,_l); } printf("Homework Finished/n"); } return 0; } 暴力乘到尾.............................