CCCC-L1-025 正整數A+B題解
題的目標很簡單,就是求兩個正整數A和B的和,其中A和B都在區間[1,1000]。稍微有點麻煩的是,輸入並不保證是兩個正整數。
輸入格式:
輸入在一行給出A和B,其間以空格分開。問題是A和B不一定是滿足要求的正整數,有時候可能是超出範圍的數字、負數、帶小數點的實數、甚至是一堆亂碼。
注意:我們把輸入中出現的第1個空格認為是A和B的分隔。題目保證至少存在一個空格,並且B不是一個空字串。
輸出格式:
如果輸入的確是兩個正整數,則按格式A + B = 和輸出。如果某個輸入不合要求,則在相應位置輸出?,顯然此時和也是?。
輸入樣例1:
123 456
輸出樣例1:
123 + 456 = 579
輸入樣例2:
- 18
輸出樣例2:
? + 18 = ?
輸入樣例3:
-100 blabla bla…33
輸出樣例3:
? + ? = ?
程式碼
#include <bits/stdc++.h>
using namespace std;
int transf(string s)
{
if(s[0]=='-') return -1;
int k=s[0]-'0';
if(k<0||k>9) return -1;
for(int i=1;i<s.length();i++)
{
k=s[i]-'0';
if(k<0||k>9) return -1;
}
stringstream ss;
ss<<s;
int x;
ss>>x;
if(x>1000||x<1) return -1;
return x;
}
int main()
{
string str,str1,str2;
getline(cin,str);
int pos=str.find(' ');
str1=str.substr(0,pos);
str2=str.substr(pos+1);
//cout<<str1<<"-"<<str2;
int a=transf(str1);
int b=transf(str2);
if(a==-1) cout<<'?';
else cout<<a;
cout<<" + ";
if(b==-1) cout<<'?';
else cout<<b;
cout<<" = ";
if(a==-1||b==-1) cout<<'?';
else cout<<a+b;
return 0;
}
總結
- 關鍵點1:如何拆分兩個字串。由於題目“我們把輸入中出現的第1個空格認為是A和B的分隔。題目保證至少存在一個空格,並且B不是一個空字串。”,而cin識別字串到空格截止,從空格後繼續識別,導致可能漏掉空格。eg.12 34應該是12 + ? = ?而不是12 + 34 = 46
故先作為一個字串讀入,然後根據第一個空格的位置進行拆分。 - 關鍵點2:string向int的轉換
- 輸出時本來想用a==-1?’?’:a的,編譯報錯。不能把字元給int變數。
相關文章
- L1-025 正整數A+B pythonPython
- L1-025 正整數A+B 分數 15
- 怎樣解題|題2.4.9:連續正整數之和
- 求正整數
- 數數的位數(正整數)
- 匹配正整數正規表示式
- JQuery 判斷 正整數jQuery
- 1016 部分A+B (15分)【java題解】Java
- A+B問題
- 匹配n位正整數正規表示式
- 匹配整數正規表示式
- LeetCode-343. 整數拆分 - 題解分析LeetCode
- js 將負數或小數轉成正整數JS
- 詳解Java判斷是否是整數,小數或實數的正規表示式Java
- 怎樣解題|題2.1.17:非負整數的分組
- 正整數表單校驗規則
- JavaScript正規表示式校驗非正整數例項JavaScript
- 【JAVA習題六】輸入兩個正整數m和n,求其最大公約數Java
- Just for fun——分解一個正整數的質因數
- 匹配至少n位整數正規表示式
- 陣列中未出現的最小正整數陣列
- C/C++模運算(正負整數)C++
- 匹配指定範圍整數正規表示式
- Python入門:A+B問題Python
- A+B 演算法問題演算法
- 整數因子分解問題
- Python:判斷一個正整數是否為迴文數Python
- JavaScript正規表示式校驗非零的正整數例項JavaScript
- P1001 A+B Problem(整活-dijstra堆最佳化)JS
- Input 輸入框中 只能輸入正整數
- 實現一個原子的正整數類:AtomicPositiveInteger
- 1006 換個格式輸出整數 (15分)【java題解】Java
- 醜數,即只包含質因數 2、3 和 5 的正整數。
- 一組簡單一點的題目(六) T – 整數解
- python將輸入的一個正整數分解質因數(map)Python
- A+B
- 在Java中,整數的絕對值不一定是正數Java
- JavaScript正規表示式校驗非負整數例項JavaScript