第乙個是十進位制數n (−32768≤n≤32767)
第二個是負進製數的基數-r。
110001=1×(−2)5+1×(−2)4+0×(−2)3+0×(−2)2+0×(−2)1+1×(−2)0
輸入:15 -2 輸出 15=110001(base-2)
在計算機運算中會出現取模結果為負數的情況,例如:
-3 / -2 = 1
-3 % -2 = -1
餘數是負的,這是我們不想看到的,因為如果想把 n 轉化為 r 進製,每一步只需要把 n 對 r 取模結果存起來,並除以 r ,直到為0停止,最後輸出就是 r 進製表示n的結果,對於負數也是如此,所以這個過程中只需要把取模後為負數的數變正數就好了。
k = n / r 對應 1 = -3 / -2
n % r = t 對應 -3 % -2 = -1
n = r * k + t 對應 -3 = -2* 1 - 1
n = r * (k + 1) + t - r 對應 -3 = -2 * 2 - 1 - (-2) = -2 * 2 + 1 (這樣就把取模後的數從負數變成正數了)
#include#include#include#include#include#include#include#include#include#include#include#define up(i, x, y) for(int i = x; i <= y; i++)
#define down(i, x, y) for(int i = x; i >= y; i--)
#define maxn ((int)1e5 + 10)
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
string str = "0123456789abcdefghigklmnopqrstuvwxyz";
int main()
while(!st.empty())
printf("(base%d)\n", r);
}
P1017 進製轉換
我們可以用這樣的方式來表示乙個十進位制數 將每個阿拉伯數字乘以乙個以該數字所處位置的 值減1 為指數,以10為底數的冪之和的形式。例如 123可表示為 1 102 2 101 3 1001 times 10 2 2 times 10 1 3 times 10 01 102 2 10 1 3 100 ...
P1017 進製轉換
題目描述 我們可以用這樣的方式來表示乙個十進位制數 將每個阿拉伯數字乘以乙個以該數字所處位置的 值減11 為指數,以1010為底數的冪之和的形式。例如 123123可表示為 1 times 10 2 2 times 10 1 3 times 10 01 10 2 2 10 1 3 10 0這樣的形式...
P1017 進製轉換
我們可以用這樣的方式來表示乙個十進位制數 將每個阿拉伯數字乘以乙個以該數字所處位置的 值減11 為指數,以1010為底數的冪之和的形式。例如 123123可表示為 1 times 10 2 2 times 10 1 3 times 10 01 102 2 101 3 100這樣的形式。與之相似的,對...