zoukankan      html  css  js  c++  java
  • CCCC 正整数A+B

    题意:

    本题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。

    输入格式:

    输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。

    注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。

    输出格式:

    如果输入的确是两个正整数,则按格式“A + B = 和”输出。如果某个输入不合要求,则在相应位置输出“?”,显然此时和也是“?”。

    分析:这题很坑。

    1、A和B都在区间[1,1000]。

    2、前导0也算不合要求。

    #include<bits/stdc++.h>
    using namespace std;
    const double eps = 1e-8;
    string s;
    int ans;
    bool judge(string x){
        ans = 0;
        int len = x.size();
        for(int i = 0; i < len; ++i){
            if(i == 0 && x[i] == '0') return false;
            if(x[i] >= '0' && x[i] <= '9'){
                ans = ans * 10 + (x[i] - '0');
            }
            else return false;
        }
        if(ans > 1000 || ans == 0) return false;
        return true;
    }
    int main(){
        getline(cin, s);
        int len = s.size();
        string x;
        string y;
        for(int i = 0; i < len; ++i){
            if(s[i] == ' '){
                x = s.substr(0, i);
                y = s.substr(i + 1, len);
                break;
            }
        }
        bool ok = true;
        int tmp = 0;
        if(judge(x)){
            printf("%d + ", ans);
            tmp += ans;
        }
        else{
            ok = false;
            printf("? + ");
        }
        if(judge(y)){
            printf("%d = ", ans);
            tmp += ans;
        }
        else{
            ok = false;
            printf("? = ");
        }
        if(!ok) printf("?\n");
        else{
            printf("%d\n", tmp);
        }
        return 0;
    }
    

      

  • 相关阅读:
    DOS下读取4GB内存
    开始了
    PHP函数补完:var_export()
    php 调试相关
    css选择符
    javascript的urlencode
    用CSS代码绘制三角形 纯CSS绘制三角形的代码
    Jquery 操作Cookie
    提高PHP编程效率的53种方法
    执行phpinfo();时提示:date_default_timezone_set()
  • 原文地址:https://www.cnblogs.com/tyty-Somnuspoppy/p/6591841.html
Copyright © 2011-2022 走看看