zoukankan      html  css  js  c++  java
  • 2016年团体程序设计天梯赛-决赛 L1-1. 正整数A+B(15)

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

    输入格式:

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

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

    输出格式:

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

    输入样例1:

    123 456
    

    输出样例1:

    123 + 456 = 579
    

    输入样例2:

    22. 18
    

    输出样例2:

    ? + 18 = ?
    

    输入样例3:

    -100 blabla bla...33
    

    输出样例3:

    ? + ? = ?

    记得只有在[1,1000]范围里的数字才有效哦
     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<math.h>
     4 #include<string.h>
     5 #include<limits.h>
     6 #include<algorithm>
     7 #include<queue>
     8 using namespace std;
     9 
    10 int main()
    11 {
    12     char a[1000],b[1000];
    13     cin>>a;
    14     scanf(" ");
    15     gets(b);
    16     bool flag1=true,flag2=true;
    17     int len1=strlen(a),len2=strlen(b);
    18     if(len1<1||len1>4)
    19     flag1=false;
    20     else
    21     {
    22         for(int i=0;i<len1;i++)
    23         if(a[i]<'0'||a[i]>'9')
    24         {
    25             flag1=false;
    26             break;
    27         }
    28     }
    29     if(len2<1||len2>4)
    30     flag2=false;
    31     else
    32     {
    33         for(int i=0;i<len2;i++)
    34         if(b[i]<'0'||b[i]>'9')
    35         {
    36             flag2=false;
    37             break;
    38         }
    39     }
    40     int c=0,d=0;
    41     if(flag1&&flag2)
    42     {
    43         for(int i=0;i<len1;i++)
    44         {
    45             c=c*10+a[i]-'0';
    46         }
    47         for(int i=0;i<len2;i++)
    48         {
    49             d=d*10+b[i]-'0';
    50         }
    51         if(c<1||c>1000)flag1=false;
    52         if(d<1||d>1000)flag2=false;
    53     }
    54     if(flag1)cout<<a;
    55     else cout<<"?";
    56     cout<<" + ";
    57     if(flag2)cout<<b;
    58     else cout<<"?";
    59     cout<<" = ";
    60     if(flag1&&flag2)
    61     {
    62         cout<<c+d;
    63     }
    64     else cout<<"?";
    65     cout<<endl;
    66     return 0;
    67 }
  • 相关阅读:
    Command Line Tools for win32
    鼠标快速复制粘帖工具!
    IBM T系列笔记本安装2003未知设备问题!
    拔智齿!痛苦磨难中!
    I am a hero!
    vim学习笔记!
    产生数
    NumPy矩阵运算
    1130:找第一个只出现一次的字符
    小A与小姐姐给气球涂色[dp + 快速幂]
  • 原文地址:https://www.cnblogs.com/Annetree/p/5679404.html
Copyright © 2011-2022 走看看