1010 Radix 25 很多要注意的小細節

2021-08-31 09:23:24 字數 1019 閱讀 6521

由乙個數的進製求另乙個數的進製使這兩個數在10進製的時候相等

注意:1.進製有可能會很大,因此兩個數轉化為10進製時都要使用longlong儲存

2.因為進製的範圍很廣不止2-36,因此要用二分查詢 範圍是這個字串裡的最大字元+1到給出進製的數的十進位制值+1,且要注意查詢時轉化為十進位制數後還有可能溢位,要判斷溢位時進製再往下取的情況

#include#include#includeusing namespace std;

int main()

if(isdigit(max))

r=max-'0'+1;

else

r=max-'a'+10+1;

long long high=sum+1;

long long low =r;

for(j=(high+low)/2;low<=high;j=(high+low)/2)

else if(sum1=0;i--)

if(isdigit(s2[i]))

sum+=pow(radix,s2.size()-1-i)*(s2[i]-'0');

else

sum+=pow(radix,s2.size()-1-i)*(s2[i]-'a'+10);

char max='0';

int r;

for(i=0;imax)

max=s1[i];

}if(isdigit(max))

r=max-'0'+1;

else

r=max-'a'+10+1;

long long high=sum+1;

long long low =r;

for(j=(high+low)/2;low<=high;j=(high+low)/2)

else if(sum1else if(sum1==sum)

}if(flag==1)

printf("impossible");

else

cout<}

}}

PAT1010 Radix(進製轉換)

分析 給定一對正整數,例如6和110,這個等式6 110是否為真?答案是 是 如果6是十進位制數,110是二進位制數的話。現在對於任意一對正整數n1和n2,你的任務是找到乙個數字的進製,而另乙個數字的進製是給定的。分析 修改了一下,現在是24 25。1 首先確定讓你判斷的數的進製,它的下限應該是自身...

1010 Radix 進製轉換(有坑)

思路 這題有坑啊 1 z表示36並不意味著只到36進製,最小2進製,最大進製 另乙個數的值 2 可能會超時,用二分 3 用long long!在二分過程中會溢位,所以要特判,當溢位時說明書過大,right mid 1 如下 include include include include includ...

PAT A1010 Radix 膜!演算法筆記題解

這道題是有點坑的,題意表述上沒有明確,radix的值並不在 0,36 之間,所以暴力遍歷是行不通的。反正也不會o o 看了下演算法筆記關於這道題的題解,根據題解中所述,假定已知的radix都是n1的 若不是則交換 則轉換為10進製後n1不會超過long long 的範圍,故僅需對n2轉換的時候進行判...