乘積的末三位

2021-06-21 14:24:14 字數 1829 閱讀 1188

題目名稱:乘積的末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...