題意:給乙個十進位制n,在某種進製下它只包含3、4、5、6,問這樣的進製有幾種
思路:進製轉化的題目,如果直接暴力方法,那麼肯定會超時。n = a0 + a1*x + a2*x^2 + a3*x^3 +.....+ an*x^n(x是基數) (n)10 = (an an-1 ...a0)x
先考慮(n)10 = (a0)x的情況,a0 = n && x > 10, 那麼只能是3,4,5,6, 而且情況有無數種;
在考慮(n)10 = (a1 a0)x的情況,n = a0+a1*x,然後解方程即可;
然後在考慮(n)10 = (a2 a1 a0)x的情況,n = a0 + a1*x + a2*x^2 ,然後解方程;
最後考慮x進製的n的位數大於3的情況,那麼x <= 10000, 在考慮到ai只能取3,4,5,6,x <= 7000 , 接下來就是暴力了。
**如下:
#include#include#include#include#include#include#include#include#include#include#include#define ll __int64
#define inf 0x7ffffff
#define eps 1e-9
#define pi acos(-1.0)
using namespace std;
int a[4]=;
ll n;
bool judge_twobit(int a0,int a1)
return false;
}bool judge_threebit(int a0,int a1,int a2)
}return false;
}int main()
int ans = 0;
int i,j,k;
for(i = 0; i < 4; i++)
for(j = 0; j < 4; j++)
if(judge_twobit(a[i],a[j]))
ans++;
for(i = 0; i < 4; i++)
for(j = 0; j < 4; j++)
for(k = 0; k < 4; k++)
if(judge_threebit(a[i],a[j],a[k]))
ans++;
//cout<3)
ans++;
}printf("%d\n",ans);
}return 0;
}
hdu 進製轉換
problem description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 output 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果r大於10,則對應的數字規則參考16進製制...
HDU 2031 進製轉換
problem description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 output 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果r大於10,則對應的數字規則參考16進製制...
進製轉換 HDU2031
problem description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 output 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果r大於10,則對應的數字規則參考16進製制...