Codevs 3194 基因变异

Codevs 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 点此展开 

 
 严重怀疑标签的真实性~~ 明明是高精乘法
(⊙v⊙)嗯~ 代码:
#include<iostream>
#include<cstdio>
using namespace std;

const int N = 100010;
int n,m,x,lena,lenb;
int a[N],b[N],c[N];
int p;

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[i+lenb] = x;
        }
        int lenc = lena + lenb;
        while(c[lenc]==0&&lenc>1)
        lenc--;
        lenb=lenc;
        for(int i=1; i<=lenb; i++){
            b[i] = c[i];
            c[i] = 0;
        }    
    }
    for(int i=lenb; i>0; i--)
        cout<<b[i];
    return 0;
}

 

自己选的路,跪着也要走完!!!

posted @ 2017-05-11 10:05  橘生淮南终洛枳  阅读(130)  评论(0编辑  收藏  举报