3194 基因变异

3194 基因变异

 

 时间限制: 1 s
 空间限制: 32000 KB
 题目等级 : 黄金 Gold
 
 
 
题目描述 Description

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

输入描述 Input Description

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

输出描述 Output Description

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

样例输入 Sample Input

4 3

100 20 3

样例输出 Sample Output

24000

数据范围及提示 Data Size & Hint

没必要啦

分类标签 Tags 点此展开 

 
 
标签都贴的什么呀,明明就是个高精度乘法,弄什么数论,吐槽~~吐槽~~
#include<cstdio>
#include<iostream>
using namespace std;
#define N 100010
int n,m,x,lena,lenb;
int a[N],b[N],c[N];
int p=0;
int main(){
    cin>>n>>m;
    int t=n;
    while(t){
        b[++p]=t%10;
        t/=10;
    }
    lenb=p;p=0;
    for(int k=1;k<=m;k++){
        cin>>x;
        while(x){
            a[++p]=x%10;
            x/=10;
        }
        lena=p;
        p=0;
        for(int i=1;i<=lena;i++){
            x=0;
            for(int j=1;j<=lenb;j++){
                c[i+j-1]+=a[i]*b[j]+x;
                x=c[i+j-1]/10;
                c[i+j-1]%=10;
            }
            c[lenb+i]=x;
        }
        int j=lena+lenb;
        while(c[j]==0&&j>1) j--;
        lenb=j;
        for(int i=1;i<=lenb;i++)
            b[i]=c[i],c[i]=0;
    }
    for(int i=lenb;i;i--){
        cout<<b[i];
    }
    return 0;
}
posted @ 2016-07-04 10:38  神犇(shenben)  阅读(225)  评论(0编辑  收藏  举报