1、類推進制的構成
推理1:
10進製:112*221=24752
可寫為:(1*10^2+1*10^1+2*10^0)*(2*10^2+2*10^1+1*10^0)=2*10^4+4*10^3+7*10^2+5*10^1+2*10^0
類推n進製:abc*bca=(a*n^2+b*n^1+c*n^0)*(b*n^2+c*n^1+a*n^0)
推理2:
從上面的10進製中我們可以得到:等式兩邊同時對10求餘——每個乘數的個位數之積,對10求餘,餘數就是這兩個乘數之積的個位數 ((2*1)%10=2)。
那麼同理:在n進製中,等式兩邊同時對n求餘——每個乘數的個位數之積,對n求餘,餘數就是這兩個乘數之積的個位數。
2、例項:
a、如果在某系統中,等式15*4=112成立,則系統採用的是(a)進製。
a、6 b、7 c、8 d、9
解:利用推理2,可得(4*5)%n=2;則n=6或n=9;
使用推理1,可得(1*6^1+5)*4 = 44, 1*6^2+1*6^1+2 = 44;
(1*9^1+5)*4=56, 1*9^2+1*9^1+2=92;
b、如果在某系統中,等式567*456=150216成立,則系統採用的是(d)進製。
a、9 b、10 c、12 d、18
解:使用推理2可得(7*6)%n=6;則n=9或n=12或n=18;
使用推理1可得(5*n^2+6*n+7)*(4*n^2+5*n+6)=n^5+5*n^4+2*n^2+n+6
此時如果我們再將選項帶進去乙個乙個試的話,將非常的麻煩,不僅耗時難算,還容易出錯。
那麼像遇到像這種高進製的數時,先化簡,然後等式兩邊同除n,最後再求餘。
化簡得:20*n^4+49*n^3+88*n^2+71*n+42=n^5+5*n^4+2*n^2+n+6;
兩邊同時除以n再對n求餘化簡得:(71+36/n)%n=1;
解得n=18.
1、巨集就是字元替換。
例項a#define pow(x) (x)*(x)
#define double(x) (x)+(x)
int main()
C 的巨集和 C 的巨集
總結一下c和c 的巨集。大家經常使用的其實都是c中的巨集,但是c 都延續了下來,先回顧一下。define 定義巨集 undef 取消巨集 include 包含標頭檔案 ifdef 如果巨集已經定義,則返回真 ifndef 如果巨集沒有定義,則返回真 if 如果條件為真,則執行下面的 else 與 i...
關於進製的問題
關於進製的問題 eg 如果某系統15 4 112成立,則系統採用的是幾進製?a.6 b.7 c.8 d.9 解題思路 先看個位數字的乘積 5 4 20 根據選項試出20對哪個數取余為2,排除bc選項,展開等號兩邊 n 5 4 n 2 n 2 解得n 3 舍 n 6 因此答案選a eg 假設在n進製下...
關於C語言巨集定義的技巧 和
和 是兩個預處理運算子,只能在預處理的過程中使用。在帶引數的巨集定義中,帶引數的巨集定義也是可以使用可變引數的 define showlist printf va args 其中.表示使用可變引數,va args 在於處理中被實際的引數集所替換。include define str s s str ...