題目名稱:乘積的末3位(product)
* 題目描述:
* 輸入若干個整數(可以是正數、負數或者零),輸出它們的乘積的末3位。
* 這些整數中會混入一些由大寫字母組成的字串,你的程式中應當忽略它們。
* 樣例輸入:+1 +2 + -1 -2 k 12 english 54 9876 -111
* 樣例輸出:712
[cpp]view plain
copy
/*** 題目分析:
* 題目難度主要在於參差的資料型別輸入。
* 題目總思路,使用while語句逐個string作為單詞輸入。
* 然後通過呼叫函式bool getint(...)判斷該單詞是否整數,另外,再利用該函式的形參將正確的整數返回。
* 將從函式裡面得出的整數與結果相乘,乘後保留末三位整數即可。
* 其中,關於如何實現bool getint(string get, int & nowget)才是難題。實現方法如下:
* 首先,考慮不是整數的情況,1.字串為空,返回false, 2.是字母或是僅有乙個符號。
* 除了字串為空的情況外,我們可以開始考慮字串不為空的情況,字串不為空時,存在三種情況,
* 第一種,帶符號的整數,第二種,不帶符號的整數,第三種,不是整數。
* 關於這三種情況,可以使用乙個if-else if- else語句來實現,
* 第一種情況:if ('+' == get[0] || '-' == get[0])帶上了符號,可以直接忽略讀取第[0]位符號位,然後再
* 從最尾位開始讀取,讀取3位數即可停止,當讀取途中不滿三位數或者碰上符號位時,
* 立即返回。
* 第二種情況:if('0' <= get[0] && '9' >= get[0]) 直接是數字的情況下,跟第一種情況的思路基本一致,
* 直接從最尾位開始取個位數,次尾位取十位數,倒數第三位取百位數。
* 第三種情況:由於不符合需要的整數的轉換條件,只需要直接返回false即可.
* 另外,如果想將字元型的數字轉換成數值,只需要將原來的字元型減去'0'即可得到相對應的數值。
**/#include
#include
#include
#include
#include
using
namespace
std;
bool
getint(string get,
int& nowget)
nowget = 0; if(
'+'== get[0] ||
'-'== get[0])
for(
intj = 0, i = stringlong - 1; i > 0 && i >= stringlong - 3; --i, ++j)
nowget += int
(get[i] -
'0') * (
int) (pow(
double
(10), j));
} return
true
; }
elseif(
'0'<= get[0] &&
'9'>= get[0])
return
true
; }
else
} intmain()
} cout << result << endl;
return
0;
}
求解13的13次方的末三位 10進製
今天有朋友突然打 問我這個問題,我考慮了一會兒,給朋友回了一封郵件 13 13 個位數很容易判斷,週期為4,取值1 3 9 7 十位和百位暫時沒有找到規律,只好用下面的笨辦法 an 13 n bn 13 10 n 運算依據 an 13 ak 1000 其中n k 1 a0 001 a1 13 001...
我的三位老師
第一位老師是我初中班主任 我從小就很調皮,但性格比較好強。我記得初中那會,學數學,我經常沒寫作業,被老班點了幾次名字。但是老班沒怎麼說我,反而在數學課上說我很有潛力,一下子我開始學習,並結識了一群好朋友。第二位老師是初中物理老師 他的課我基本上是最活躍的,因為我是物理課代表。他的幽默,讓我改變了對老...
三位運算子 三位運算子的便捷性
三位運算子的便捷性 double values userservice.selectall dateutil.formatdatetostring calendarnow00.gettime yyyy mm dd hh mm code1,code2 data.setcurrentvalue valu...