38行代码AC——L1-025 正整数A+B (15分)(~解题报告~)
立志用更少的代碼做更高效的表達(dá)
題的目標(biāo)很簡單,就是求兩個正整數(shù)A和B的和,其中A和B都在區(qū)間[1,1000]。稍微有點麻煩的是,輸入并不保證是兩個正整數(shù)。
輸入格式:
輸入在一行給出A和B,其間以空格分開。問題是A和B不一定是滿足要求的正整數(shù),有時候可能是超出范圍的數(shù)字、負(fù)數(shù)、帶小數(shù)點的實數(shù)、甚至是一堆亂碼。
注意:我們把輸入中出現(xiàn)的第1個空格認(rèn)為是A和B的分隔。題目保證至少存在一個空格,并且B不是一個空字符串。
輸出格式:
如果輸入的確是兩個正整數(shù),則按格式A + B = 和輸出。如果某個輸入不合要求,則在相應(yīng)位置輸出?,顯然此時和也是?。
輸入樣例1:
123 456
輸出樣例1:
123 + 456 = 579
輸入樣例2:
22. 18
輸出樣例2:
? + 18 = ?
輸入樣例3:
-100 blabla bla…33
輸出樣例3:
? + ? = ?
幾個特殊樣例
輸入: 1 1000
輸出: 1 + 1000 = 1001
輸入:123?33(中間兩個空格)
輸出:123 + ? = ?
輸入: 1 001
輸出: 1 + 1 = 2
代碼展示
#include <bits/stdc++.h> using namespace std; int main() {char a[1000],b[1000];int sum1=0,sum2=0;bool flag1 =true,flag2=true;int len1,len2;scanf("%s",a);len1 = strlen(a);for (int i=0;i<len1;i++) if (a[i]>'9'||a[i]<'0')flag1=false;if (flag1) {sum1=a[0]-'0';for (int i=1;i<len1;i++)sum1=sum1*10+(a[i]-'0');}getchar();scanf("%[^\n]",b);len2 = strlen(b);for (int i=0;i<len2;i++) if (b[i]>'9'||b[i]<'0')flag2=false;if (flag2) {sum2 = b[0]-'0';for (int i=1;i<len2;i++)sum2 = sum2*10+(b[i]-'0');}if (flag1&&sum1>=1&&sum1<=1000)printf("%d + ",sum1);else printf("? + ");if (flag2&& sum2>=1&&sum2<=1000)printf("%d = ",sum2);else printf("? = ");if (flag1&&sum1>=1&&sum1<=1000 && flag2&& sum2>=1&&sum2<=1000)printf("%d",sum1+sum2);else printf("?");return 0; }每日一句
記住,不要憤怒,因為憤怒會降低你的智慧;也不要仇恨自己的敵人,因為仇恨會使你喪失判斷力。與其恨自己的敵人,不如拿他來為我所用。
總結(jié)
以上是生活随笔為你收集整理的38行代码AC——L1-025 正整数A+B (15分)(~解题报告~)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【已解决】navigateTo:fail
- 下一篇: 4行代码AC——L1-026 I Lov