码迷,mamicode.com
首页 > 其他好文 > 详细

2017百度之星复赛1001Arithmetic of Bomb------hdu6144

时间:2017-08-19 00:52:25      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:也有   blog   name   scan   16px   family   溢出   div   ons   

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6144

分析:这道题挺水的,就是讲(a)#(b)表示有b个相连的a,当然也有可能有穿插不是这样表示直接给数字的,比如题目的(12)#(2)4(2)#(3)表示12124222,照着模拟就行了,注意下要到处取模,要不可能出现溢出啥的

代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod = 1000000007;
LL num10[1005];
int main() {
    int T;
    num10[0] = 1;
    for(int i= 1; i <= 1005; i++) {
        num10[i] = (num10[i-1] * 10) % mod;
    }
    scanf("%d",&T);
    while(T--) {
        string str;
        cin>>str;
        LL sum = 0;
        for(int i = 0; i < str.length(); i++) {
            if(str[i] <= 9 && str[i] >= 0)
                sum = (sum * 10 + str[i] - 0) % mod;
            else {
                i++;
                LL tmp = 0;
                LL number = 0;
                while(i < str.length() && str[i] != )) {
                    tmp = (tmp * 10 + (str[i++] - 0)) % mod;
                    number++;
                }//cout<<str[i]<<str[i+1]<<str[i+2];
                i = i + 3;
                LL cont = 0;
                while(i < str.length() && str[i] != )) {
                    cont = (cont * 10 + (str[i++] - 0)) % mod;
                }
                for(int j = 0; j < cont; j++) {
                    sum = (sum * num10[number] % mod + tmp + mod) % mod;
                }
            }
        }
        printf("%I64d\n",sum);
    }
    return 0;
}

 

2017百度之星复赛1001Arithmetic of Bomb------hdu6144

标签:也有   blog   name   scan   16px   family   溢出   div   ons   

原文地址:http://www.cnblogs.com/maplefighting/p/7392635.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!