tyvj1040表达式

点击这里更换您喜欢的皮肤 Tyvj 首页
提交 0 / 3 题 (0%)  首页 站务 公告 数据 评测机 | 题库 分类 记录 测试 排名 团队 讨论 | User Space 换肤|登出  
 
   
   
   

   
 
From Admin
表达式计算
 
   
   
 描述 Description  
  给出一个表达式,其中运算符仅包含+,要求求出表达式的最终值


   
   
 输入格式 Input Format 
  仅一行,即为表达式
   
   
 输出格式 Output Format 
  仅一行,既为表达式算出的结果
   
   
 样例输入 Sample Input  
 
   
   
 样例输出 Sample Output  
 
   
   
 时间限制 Time Limitation 
  各个测试点1s
   
   
 注释 Hint 
  表达式总长度<=1500
   
   
 
Flag
  Unaccepted
题号
  P1040
  模拟
通过
  435人
提交
  2096次
通过率
  21%
难度
  1
 
   
   
 
提交讨论题解数据
 
   
 
 

#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
int sum[1000],num1[1000];
void GetLargenum(int *num1,char *str,int k,int p)//分解表达式中的大数(从k到p)

{
    int n=0,m;
    if(k==0) m=k;//刚开始的时候m=0;
    else m=k+1;//随后m为加号后面的数开始
    for(int i=p-1;i>=m;i--)
    num1[n++]=str[i]-'0';
}
void Calc(int *sum,int *num1)//利用sum数组进行累加
{
    for(int i=0;i<1000;i++)
    {
        sum[i]=sum[i]+num1[i];
        if(sum[i]>=10)
        {
            sum[i]=sum[i]-10;
            sum[i+1]+=1;
        }
    }
}
int main()
{
    char str[1500];
    cin>>str;
    memset(sum,0,sizeof(sum));
    int k=0,p=0;
    for(int i=0;str[i]!='/0';i++)
    {
        if(str[i]=='+')
        {
            k=p;p=i;//利用k,p保存数的开头和结尾
            memset(num1,0,sizeof(num1));
            GetLargenum(num1,str,k,p);
            Calc(sum,num1);
        }
    }
    int len=strlen(str);
    memset(num1,0,sizeof(num1));//最后一个数以'/0'结尾,单独处理
    GetLargenum(num1,str,p,len);
    Calc(sum,num1);
    bool beStartOutput=false;
    for(int i=999;i>=0;i--)
    {
        if(beStartOutput||sum[i])
        {
            cout<<sum[i];
            beStartOutput=true;
        }
    }
    if(!beStartOutput) cout<<'0';
    cout<<endl;
    return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值