河南省第七届ACM【Turing equation】

Description

The fight goes on,whether to store  numbers starting withtheir most significant digit or their least  significant digit. Sometimes  this  isalso called  the  "Endian War". The battleground  dates far back into the early days of computer science. Joe Stoy,  in his (by the way excellent)  book  "DenotationalSemantics", tells following story:

"Thedecision  which way round the digits runis,  of course, mathematically trivial.Indeed,  one early British computer  had numbers running from right to left(because the  spot on an oscilloscopetube  runs from left to right, but  in serial logic the least significant digitsare dealt with first). Turing used to mystify audiences at public lectureswhen, quite by accident, he would slip into this mode even for decimalarithmetic, and write  things  like 73+42=16.  The next version of  the machine was  made  moreconventional simply  by crossing thex-deflection wires:  this,  however, worried the engineers, whosewaveforms  were all backwards. Thatproblem was in turn solved by providing a little window so that the engineers(who tended to be behind the computer anyway) could view the oscilloscopescreen from the back.


You will play the role of the audience and judge on the truth value of Turing'sequations.

Standard  input

The input containsseveral test cases. Each specifies on a single line a Turing equation. A Turingequation has the form "a+b=c", where a, b, c are numbers made up ofthe digits 0,...,9. Each number will consist of at most 7 digits. This includespossible leading or trailing zeros. The equation "0+0=0" will finishthe input and has to be processed, too. The equations will not contain any spaces.

Standard  output

For each test casegenerate a line containing the word "TRUE" or the word "FALSE",if the equation is true or false, respectively, in Turing's interpretation,i.e. the numbers being read backwards.

Sample  Input                

73+42=16                                                           

5+8=13                                                               

0001000+000200=00030                             

0+0=0

 Sample  Output
TRUE

FALSE

 TRUE



先颠倒字符串。然后分别保存。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
    string s;
    while(cin>>s)
    {
        reverse(s.begin(),s.end());
        int a=0,b=0,c=0,i=0,j=1;
        for(i=0; i<s.length(); i++)
        {
            if(isdigit(s[i])&&j==1)
            {
                a=a*10+(s[i]-'0');
            }
            if(!isdigit(s[i]))
            {
                j++;
            }
            if(isdigit(s[i])&&j==2)
            {
                b=b*10+(s[i]-'0');
            }
            if(isdigit(s[i])&&j==3)
            {
                c=c*10+(s[i]-'0');
            }
        }
        if(a==0&&b==0&&c==0)
            break;
        //  cout<<a<<" "<<b<<" "<<c<<" "<<endl;
        if(a==b+c)
        {
            cout<<"TRUE"<<endl;
        }
        else cout<<"FALSE"<<endl;

    }

    return 0;

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值