FZU 1404 Andy的作业
2009-12-13 15:12
357 查看
Problem Description
Andy每天都有很多作业要做,他的老师总是在说“这些作业你明天必须交上来……”。现在他找你帮忙做其中的一项作业,给出N个整数A1, A2, ..., AN,有 M 个询问 q (L, R),对于每个询问,你要输出一个整数,第L个数到第R个数的乘积,这个乘积不会超过1000位。
/************************************/
因为少考虑了0,害我WA了好多了,,,,,狂无语.....................
Andy每天都有很多作业要做,他的老师总是在说“这些作业你明天必须交上来……”。现在他找你帮忙做其中的一项作业,给出N个整数A1, A2, ..., AN,有 M 个询问 q (L, R),对于每个询问,你要输出一个整数,第L个数到第R个数的乘积,这个乘积不会超过1000位。
Input
输入包含多组测试数据。每组数据第一行为两个整数N,M (N <= 800, M <= 1000) 接下来N行,给出这N个整数。然后M行,每行两个整数L R表示一个询问。Output
对于每个询问,输出相应的结果。当所有询问结束之后输出“Homework Finished”。Sample Input
10 5 9 7 9 6 4 9 5 8 3 4 5 9 3 8 8 10 10 10 1 7 1 1 1 1 1Sample Output
4320 77760 96 4 612360 Homework Finished 1 Homework Finished/************************************/
因为少考虑了0,害我WA了好多了,,,,,狂无语.....................
#include<iostream> using namespace std; #define MAX 10000000000000 int an[801]; unsigned __int64 arr[100]; void f(int aa,int bb) { int i,j,m=1,carry; memset(arr,0,sizeof(arr)); arr[0]=1; for(i=aa;i<=bb;i++) if(an[i]==0){printf("0/n");return;} for(i=aa;i<=bb;i++) { carry=0; for(j=0;j<m;j++) { arr[j]=arr[j]*an[i]+carry; carry=arr[j]/MAX; arr[j]=arr[j]%MAX; } if(carry>0) arr[m++]=carry; } printf("%I64u", arr[m-1]); for(i=m-2;i>=0;i--) printf("%13.13I64u", arr[i]); printf("/n"); } int main() { int n,m,i,aa,bb; while(scanf("%d%d",&n,&m)!=EOF) { for(i=1;i<=n;i++) scanf("%d",&an[i]); for(i=1;i<=m;i++) { scanf("%d%d", &aa,&bb); f(aa,bb); } printf("Homework Finished/n"); } return 0; }
相关文章推荐
- FZU1404 andy的作业
- FZU1404 Andy的作业
- FZU1404 Andy的作业
- FZU 1404 Andy的作业
- FZU1404 Andy的作业
- Problem 1404 Andy的作业
- FOJ 1404 Andy的作业
- fzu_oop_east 第二次作业
- 2017秋 FZU SDN 课程作业汇总
- FZU汇编作业 实验(五)
- FZU2132 - LQX的作业(概率论)
- fzu_oop_east 第一次作业
- FZU汇编作业 实验(四)
- Andy的作业 (大数相乘)
- FOJ 1404 Andy 的作业
- FZU Problem 2132 LQX的作业 二项分布
- FZU2132 - LQX的作业(概率论)
- fzu_noip 1033 (作业问题-拼最大的2,3,5倍数)
- FZU Problem 2132 LQX的作业
- FZU 2132 LQX的作业 概率问题