基因变异(codevs 3194)

题目描述 Description

小毛终于来到了冥王星,这是一颗已经不属于行星的矮行星,它的表面温度低于-220度。在这里,小毛惊奇的发现,他带来的厌氧菌开始了基因变异,裂变的速度与光照时间(秒)成乘积关系,公式如下:细菌个数=原个数*时间(秒),而如果关闭照明,则细菌停止繁殖裂变。现在已知n个细菌,经过m段光照时间后,一共有多少个细菌呢?

输入描述 Input Description

第一行为两个整数N,M(均小于1000),第2行为m个时间段的时间(均小于10000)。

输出描述 Output Description

仅一个正整数,表示最后的细菌个数。

样例输入 Sample Input

4 3

100 20 3

样例输出 Sample Output

24000

/*
  一个高精度,难为了自己很长时间,最后用的题解的输出格式,不大明白
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define M 100010
using namespace std;
long long a[M];
int main()
{
    int m,n;
    scanf("%d%d",&n,&m);
    a[0]=n;
    for(int T=1;T<=m;T++)
    {
        int x;
        scanf("%d",&x);
        for(int i=0;i<=501;i++)
          a[i]=a[i]*x;
        for(int i=0;i<=501;i++)
        {
            if(a[i]>=100000000)
            {
                a[i+1]+=a[i]/100000000;
                a[i]%=100000000;
            }
        }
    }
    int len;
    for(int i=501;i>=0;i--)
      if(a[i]>0)
      {
          len=i;
          break;
      }
    printf("%d",a[len]);
    for(int i=len-1;i>=0;i--)
      printf("%08d",a[i]);
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/harden/p/5640956.html