zoukankan      html  css  js  c++  java
  • luogu1022计算器的改良[noip2000提高组Day1 T1]

    题目背景

      NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能。实验室将这个任务交给了一个刚进入的新手ZL先生。

    题目描述

    为了很好的完成这个任务,ZL先生首先研究了一些一元一次方程的实例:

    4+3x=8

    6a-5+1=2-2a

    -5+12y=0

    ZL先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、小写字母及+、-、=这三个数学符号(当然,符号“-”既可作减号,也可作负号)。方程中并没有括号,也没有除号,方程中的字母表示未知数。

    你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的一元一次方程均为合法的,且有唯一实数解。

    输入输出格式

    输入格式:

    一个一元一次方程。

    输出格式:

    解方程的结果(精确至小数点后三位)。

    输入输出样例

    输入样例#1:
    6a-5+1=2-2a
    
    输出样例#1:
    a=0.750

    简单模拟,看起来好像处理的东西,像方程两侧消元什么的挺复杂,其实转化成系数的加减和字符串读写处理就很简单了。

    #include<cstdio>
    #include<string>
    #include<iostream>
    using namespace std;
    string s;
    double lt,rt;
    int u[3],n[3],k,t=0,alp;
    void cal(bool kind)
    {
        int tmp=0;
        bool flag=0;
        while('0'<=s[k]&&s[k]<='9'){
            flag=1;
            tmp=tmp*10+s[k]-'0';
            k++;
        }
        if(!flag)tmp=1;
        if(kind)tmp=-tmp;
        if('a'<=s[k]&&s[k]<='z'){
            u[t]+=tmp;
            alp=k;
            k++;
        }
        else n[t]+=tmp;
    }
    int main()
    {
        cin>>s;
        for(k=0;k<s.length();){
            if(s[k]=='='){
                t=1;
                k++;
                continue;
            }
            if(s[k]=='-'){
                k++;
                cal(1);
            }
            else{
                if(s[k]=='+')k++;
                cal(0);
            }
        }
        lt=n[0]-n[1];
        rt=u[1]-u[0];
        printf("%c=%.3lf
    ",s[alp],lt/rt);
        return 0;
    }
    


  • 相关阅读:
    PAT顶级 1024 Currency Exchange Centers (35分)(最小生成树)
    Codeforces 1282B2 K for the Price of One (Hard Version)
    1023 Have Fun with Numbers (20)
    1005 Spell It Right (20)
    1092 To Buy or Not to Buy (20)
    1118 Birds in Forest (25)
    1130 Infix Expression (25)
    1085 Perfect Sequence (25)
    1109 Group Photo (25)
    1073 Scientific Notation (20)
  • 原文地址:https://www.cnblogs.com/keshuqi/p/5957696.html
Copyright © 2011-2022 走看看