ZCMU-1180(大数相乘)
来源:互联网 发布:mac开盖自动开机 编辑:程序博客网 时间:2024/06/07 03:48
1180: a1*a2*a3*...*an
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 286 Solved: 88
[Submit][Status][Web Board]
Description
求a1*a2*a3*...*an的值
Input
第一行一个整数T,表示接下来有T行
每行一个正整数是N,然后是N个正整数a1,a2,a3...an,(0<N<1000,0<=a1<10000)
Output
输出值
Sample Input
2
5 1 2 3 4 5
4 1000 1000 1000 1000
Sample Output
120
1000000000000
【解析】
此题就是运用大数相乘的原理做的。不过在做这道题之前,我还不会....原理很简单,两者之间相乘,低位放在下标
小的地方,高位放在下标大的地方,如果有进位那就加上进位的那个数,保证数组中的每一个元素对应一个位。
#include<cstdio>#include<cstring>using namespace std;int main(){ int i,t,n,j,flag,temp,jinwei,length; scanf("%d",&t); while(t--) { flag=0; jinwei=0; length=1; scanf("%d",&n); int num[n]; int sum[10000]={1}; for(i=0;i<n;i++) { scanf("%d",&num[i]); if(num[i]==0) { flag=1; } } if(flag==1) { printf("0\n"); continue; } else { for(i=0;i<n;i++) { for(j=0;j<length;j++) { temp=sum[j]*num[i]+jinwei;//两者先乘 sum[j]=temp%10;//然后这里其实做的就是把低位给了下标小的。假设我们之前是1 5 40 jinwei=temp/10;//那么这里就是变成了200%10,所以sum[0]为0此时jinwei变成了20 }//在while循环里面sum[1]为0,sum[2]变成2了。这里只是举个例子 while(jinwei>0) { sum[length++]=jinwei%10; jinwei/=10; } } for(j=length-1;j>=0;j--) { printf("%d",sum[j]); } printf("\n"); } } return 0;}
0 0
- ZCMU-1180(大数相乘)
- 大数相乘(小数点)
- 大数相乘(java)
- Product(大数相乘)
- 大数相乘(java)
- (转)大数相乘
- (盗版)大数相乘
- 大数相乘(高精度)
- 大数相乘(大数阶乘模板)
- 大数相乘(C语言)
- 大数相乘 (JAVA版)
- 大数相乘(简单模板)
- (1.1.1.1)大数相乘
- Multiply Strings(大数相乘)
- 大数相乘(偷师)
- zcmu-1182(大数相减)
- ZCMU 1540 第k大数 (二分)
- 大数相乘
- [Magento SQL] 更加分类名称,查询该分类下所有的sku
- Linux系统Tomcat优化开启apr模式
- scala默认参数和命名参数
- Mybatis语法错误的一个坑
- Android 系列 2.5监控Android设备的电池电量
- ZCMU-1180(大数相乘)
- Spring Boot中Web应用的统一异常处理
- mysql 5.7 安装步骤
- fastcgi与php-fpm的关系
- Android Studio生成Jar包
- Atom插件开发入门教程(二)
- JKS转PEM,JKS转BKS
- php curl get post方法
- JDK8新特性:接口的静态方法和默认方法