zoukankan      html  css  js  c++  java
  • [模拟字符串] [洛谷] P2788 数学1(math1)- 加减算式

    水题一道 也是第一篇博客 

    欢迎大牛来喷

    思路非常简单 

    把字符串拆为单个数字 譬如算式1+2-3+1998可以拆为1,+2,-3,+1998

    将各个数字单独转换为int型 

    最后求和

    #include <iostream>
    #include <cstring>
    #include <cmath>
    using namespace std;
    char a[60010];//注意字符串范围
    int main()
    {
        cin>>a;
        int flag=strlen(a)-1,tmp,ts=0;
        long long sum=0;
        while(flag>=0)
        {
            tmp=flag;
            for(flag;flag>=0&&a[flag]>='0'&&a[flag]<='9';flag--);//从后遍历 flag是符号下标 flag+1是数字第一位下标 tmp是数字最后一位下标
            for(int i=tmp,j=0;i>flag;i--,j++)
            {
                ts+=(a[i]-'0')*pow(10,j);//将字符型数转换为整形数字和
            }
            if(a[flag]=='-') //注意 如果flag=0时要么是数字要么是 - 号 不会有正号 正数直接交给else处理
                sum-=ts;
            else
                sum+=ts;
            ts=0;
            flag--;
        }
        cout<<sum<<endl;
        return 0;
    }
    
  • 相关阅读:
    SDN第三次作业
    SDN第二次上机作业
    SDN第二次作业
    JAVA小记
    算法笔记
    排序
    SDN期末作业
    SDN第五次上机作业
    SDN第四次上机作业
    SDN第四次作业
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270820.html
Copyright © 2011-2022 走看看