题目描述:链接点此

这套题的github地址(里面包含了数据,题解,现场排名):点此

题目描述

Given n positive integers , your task is to calculate the product of these integers, The answer is less than

输入描述:

The first line of input is an integer n, the i-th of the following n lines contains the integer

输出描述:

Output one line with the answer 

输入例子:
5
11
12
13
14
15
输出例子:
360360

-->

示例1

输入

5
11
12
13
14
15

输出

360360
题目意思:就是给你n个整数,求相乘的大小。 这题python和java很好过,因为py和java有大数,c++就比较难受了
n=int(input())
ans=1
for i in range(n):
b=int(input())
ans=ans*b
print(ans)

c++的后来在补

fft代码:超时了,回头再优化
@@ -, +, @@
#include<cmath>
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
#include<iomanip>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#define ll long long
#define inf 1000000000
#define mod 1000000007
#define N 350000
#define fo(i,a,b) for(i=a;i<=b;i++)
#define fd(i,a,b) for(i=a;i>=b;i--)
using namespace std;
const double pi = 3.141592653;
char s1[N>>],s2[N>>];
double rea[N],ina[N],reb[N],inb[N],ret[N],intt[N];
int i,len1,len2,lent,lenres,len;
int res[N>>];
void FFT(double *reA,double *inA,int n,int flag)
{
if (n == ) return;
int k,u,i;
double reWm = cos(*pi/n) , inWm = sin(*pi/n);//��ԭ��
if (flag) inWm = -inWm;
double reW = 1.0 , inW = 0.0;
for (k = ,u = ;k < n; k += ,u++)//�������ż����ֿ�
{ret[u] = reA[k]; intt[u] = inA[k];}
for (k = ;k < n; k += )
{reA[k/] = reA[k]; inA[k/] = inA[k];}
for (k = u,i = ;k < n && i < u; k++,i++)
{reA[k] = ret[i]; inA[k] = intt[i];}
FFT(reA,inA,n/,flag); FFT(reA+n/,inA+n/,n/,flag);
fo(k,,n/-)//�ϲ�
{
int tag = n / + k;
double reT = reW * reA[tag] - inW * inA[tag];
double inT = reW * inA[tag] + inW * reA[tag];
double reU = reA[k] , inU = inA[k];
reA[k] = reU + reT; inA[k] = inU + inT;
reA[tag] = reU - reT; inA[tag] = inU - inT;
double reWt = reW * reWm - inW * inWm;
double inWt = reW * inWm + inW * reWm;
reW = reWt; inW = inWt;
}
}
void mul()
{
memset(res, , sizeof(res));
memset(rea, , sizeof(rea));
memset(ina, , sizeof(ina));
//memset(reb, 0 , sizeof(reb));
// memset(inb, 0 , sizeof(inb));
len1 = strlen(s1); len2 = strlen(s2);
lent = (len1 > len2 ? len1 : len2);
len = ;
while (len < lent) len <<= ;
len <<= ;
fo(i,,len-)
{
if (i < len1) rea[i] = (double) s1[len1-i-] - '';
if (i < len2) reb[i] = (double) s2[len2-i-] - '';
ina[i] = inb[i] = 0.0;
}
FFT(rea,ina,len,); FFT(reb,inb,len,);//���a��b�ĵ�ֵ��ʾ��
fo(i,,len-)//���c�ĵ�ֵ��ʾ��
{
//printf("%.5lf %.5lf\n",rea[i],ina[i]);
double rec = rea[i] * reb[i] - ina[i] * inb[i];
double inc = rea[i] * inb[i] + ina[i] * reb[i];
rea[i] = rec; ina[i] = inc;
}
FFT(rea,ina,len,);//���c��ϵ����ʾ��
fo(i,,len-) {rea[i] /= len; ina[i] /= len;} fo(i,,len-) res[i] = (int)(rea[i] + 0.5);
fo(i,,len-) res[i+] += res[i] / , res[i] %= ; lenres = len1 + len2 + ;
while (res[lenres] == && lenres > ) lenres--;
int kk=;
fd(i,lenres,)
s1[kk++]=res[i]+'';
}
int main()
{
freopen("temin.txt","r",stdin);
freopen("temout.txt","w",stdout);
int n;
scanf("%d",&n);
if(n==)
{
scanf("%s",s1);
printf("%s\n",s1);
}
else
{
scanf("%s",s1);
for(int i=;i<n;i++)
{
scanf("%s",s2);
mul();
}
printf("%s\n",s1);
}
return ;
}


最新文章

  1. firebug不能加载JS文件 ,无法进行JS脚本调试
  2. java的布尔运算符和位运算符
  3. [jquery]折叠指定条件的表格
  4. Shell命令_awk命令
  5. jQuery/javascript实现全选全不选
  6. 解决Centos关闭You have new mail in /var/spool/mail/root提示
  7. Have You Ever Wondered About the Difference Between NOT NULL and DEFAULT?
  8. 5.css字体
  9. [PHP]如何在百度(BAE)和新浪(SAE)的云平台使用PHP连接MySQL并返回结果数据
  10. 手势解锁自定义View
  11. jQuery插件综合应用(二)文字为主的页面
  12. CetnOS minimal 网络不可用
  13. TCP/IP 要点备忘
  14. MySQL 内建函数
  15. C语言_指针和数组的几种访问形式
  16. ffmpeg相关函数整理
  17. 记录腾讯云中矿机病毒处理过程(重装系统了fu*k)
  18. js求最大值最小值
  19. qt 在窗口上画框
  20. python多线程学习一

热门文章

  1. 【软工项目Beta阶段】博客目录
  2. 【MySQL】mysql查询强制大小写及替换字段
  3. HTML 文档流,设置元素浮动,导致父元素高度无法自适应的解决方法(高度欺骗)
  4. JS基础入门篇(三十六)—面向对象( 三 )
  5. echarts 柱状图 X(Y)轴数据过多时,滑动以及内置缩放的问题
  6. 原 Nginx网络架构实战学习笔记(七):nginx性能优化小总结
  7. Single Page Application
  8. Java对象finalize()方法
  9. Django Model里的__str__以及Meta
  10. zoom:1总结