逆序乘積式 簡單的方法

2021-08-20 22:20:10 字數 1219 閱讀 4037

當前程式設計題:考試題---逆序乘積式

47.【問題描述】

若兩個正整數的乘積,等於兩正整數各自逆序後的乘積,則稱其為逆序乘積式。編寫程式讀入兩個正整數,然後判斷這兩個正整數能否構成逆序乘積式。假設兩個正整數的乘積不會超過int資料型別的表示範圍。

【輸入形式】

從控制台輸入以乙個空格分隔的兩個正整數。

【輸出形式】

若兩個正整數能夠構成逆序乘積式,則輸出兩個正整數及其逆序的乘積形式,並且中間用乙個等號相連;若不能構成逆序乘積式,則輸出兩個正整數及其逆序的乘積形式,並且中間用乙個不等號相連。

注意:輸出的字元之間沒有空格分隔。若逆序後最高位為0,則為0的最高位不輸出。

【樣例輸入1】

12 693

【樣例輸出1】

12*693=21*396

【樣例1說明】

輸入的兩個正整數為12和693,其乘積為8316。將這兩個正整數逆序後分別為21和396,其乘積為8316。兩者乘積相等,所以輸出12*693=21*396。

【樣例輸入2】

185 1300

【樣例輸出2】

185*1300!=581*31

【樣例2說明】

輸入的兩個正整數為185和1300,其乘積為240500。將這兩個正整數逆序後分別為581和31,其乘積為18011。兩者乘積不相等,所以輸出185*1300!=581*31。

解題思路與易錯分析:

這道題不難,其實就是關於數的逆序數(這裡不是線性代數中的逆序數)就是順序反一下,關於這個的處理有很多種,但這裡說的是我認為簡單的方法,用string儲存數字然後用string下的函式使其反轉然後在將其轉化為int型別,這裡你可能會覺得好麻煩,但是你如果就用int儲存後在倒序,這裡還有乙個坑就是關於0的處理,也就是你在拆分數字的時候關於0的處理,這個問題才是真麻煩,這裡用到的將string轉化為int的方法,

詳情可以   

用string轉化為int可以避免處理關於0是否在最高位和在倒序的問題

下面附上我的**:

#include

#include

#include

#include

using namespace std;

int re(string &a)

int main()

else

cout << g << "*" << i;

}

Python解題 逆序乘積式

問題描述 若兩個正整數的乘積,等於兩正整數各自逆序後的乘積,則稱其為逆序乘積式。編寫程式讀入兩個正整數,然後判斷這兩個正整數能否構成逆序乘積式。假設兩個正整數的乘積不會超過int資料型別的表示範圍。輸入形式 從控制台輸入以乙個空格分隔的兩個正整數。輸出形式 若兩個正整數能夠構成逆序乘積式,則輸出兩個...

一種簡單的單鏈表逆序 反轉的方法

假定乙個單鏈表,其排列是這樣的 p1 p2 p3 其中,p1就是頭結點。反轉思路是 1 第一步反轉,p1和p2,也就是使得p2 next p1.如圖 p1 p2 p3 2 第二步,採用同樣的方式,反轉p3和p2,也就是使得 p1 p2 p3 既然是同第一步一樣的方式,就不能簡單地p3 next p2...

Python實現求笛卡爾乘積的方法

在數學中,兩個集合x和y的笛卡尓乘積 cartesian product 又稱直積,表示為x y,第乙個物件是x的成員而第二個物件是y的所有可能有序對的其中乙個成員。假設集合a 集合b 則兩個集合的笛卡爾積為。有時我們需要在python求兩個list的笛卡爾乘積,其實很簡單,一行 搞定。例如,求a ...