甲級| 1010.Radix

題目描述

Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes, if 6 is a decimal number and 110 is a binary number.

Now for any pair of positive integers N?1?? and N?2??, your task is to find the radix of one number while that of the other is given.

輸入描述

Each input file contains one test case. Each case occupies a line which contains 4 positive integers:
N1 N2 tag radix

Here N1 and N2 each has no more than 10 digits. A digit is less than its radix and is chosen from the set { 0-9, a-z } where 0-9 represent the decimal numbers 0-9, and a-z represent the decimal numbers 10-35. The last number radix is the radix of N1 if tag is 1, or of N2 if tag is 2.

輸出描述

For each test case, print in one line the radix of the other number so that the equation N1 = N2 is true. If the equation is impossible, print Impossible. If the solution is not unique, output the smallest possible radix.

輸入例子1

6 110 1 10

輸出例子1

2

輸入例子2

1 ab 1 2

輸出例子2

Impossible

我的代碼

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm> 
using namespace std;
typedef long long LL;
long long Map[256]; 
long long inf=(1LL << 63)-1;

void init(){  //對'0'-'9' 'a'-'z'進(jìn)行初始化賦值 
    for(char c='0';c<='9';c++){
        Map[c]=c-'0';
    } 
    for(char c='a';c<='z';c++){
        Map[c]=c-'a'+10;   
    }
}

long long convertNum10(char a[],long long radix,long long t){  //轉(zhuǎn)換為10進(jìn)制 
    long long ans=0;
    int len=strlen(a);
    for(int i=0;i<len;i++){
        ans=ans*radix+Map[a[i]];
        if(ans<0 || ans>t) return -1;  //判斷溢出 
    } 
    return ans;
}

long long findLargestDigit(char n2[]){  //找到n2的下界 
    int ans=-1,len=strlen(n2);
    for(int i=0;i<len;i++){
        if(Map[n2[i]]>ans){
            ans=Map[n2[i]];
        }
    } 
    return ans+1;
}

int cmp(char n2[],long long radix,long long t){  //將n2轉(zhuǎn)換為10進(jìn)制之后與t進(jìn)行判斷 
    int len=strlen(n2);
    long long num=convertNum10(n2,radix,t);
    if(num<0) return 1; 
    if(t>num) return -1;
    else if(t==num) return 0;
    else return 1;
}

long long binarySearch(char n2[],long long left,long long right,long long t){  //二分法查找進(jìn)制 
    long long mid;
    while(left<=right){
        mid=(left+right)/2;
        int flag=cmp(n2,mid,t);
        if(flag==0) return mid;
        else if(flag==-1) left=mid+1;
        else right=mid-1;
    } 
    return -1;
}


int main(){
    char n1[20],n2[20],temp[20];
    int tag,radix;
    cin>>n1;
    cin>>n2;
    cin>>tag;
    cin>>radix;
    init();  
    if(tag==2){  //將確定進(jìn)制的數(shù)放在n1 
        strcpy(temp,n1);
        strcpy(n1,n2);
        strcpy(n2,temp);
    }
    long long t=convertNum10(n1,radix,inf);  //將n1轉(zhuǎn)換為10進(jìn)制數(shù) 
    long long low=findLargestDigit(n2);  //找到n2中最大的數(shù) 
    long long high=max(t,low)+1;  
    long long ans=binarySearch(n2,low,high,t); //求解n2的進(jìn)制 
    if(ans==-1) cout<<"Impossible";
    else cout<<ans;
    return 0;
} 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钾恢,更是在濱河造成了極大的恐慌嘿般,老刑警劉巖余素,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驹愚,死亡現(xiàn)場離奇詭異绎巨,居然都是意外死亡受葛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蜈彼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筑辨,“玉大人,你說我怎么就攤上這事幸逆」髟” “怎么了暮现?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長楚昭。 經(jīng)常有香客問我栖袋,道長,這世上最難降的妖魔是什么抚太? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任塘幅,我火速辦了婚禮,結(jié)果婚禮上尿贫,老公的妹妹穿的比我還像新娘电媳。我一直安慰自己,他們只是感情好庆亡,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布匾乓。 她就那樣靜靜地躺著,像睡著了一般又谋。 火紅的嫁衣襯著肌膚如雪拼缝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天彰亥,我揣著相機(jī)與錄音咧七,去河邊找鬼。 笑死任斋,一個胖子當(dāng)著我的面吹牛继阻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仁卷,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼穴翩,長吁一口氣:“原來是場噩夢啊……” “哼犬第!你這毒婦竟也來了锦积?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤歉嗓,失蹤者是張志新(化名)和其女友劉穎丰介,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鉴分,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡哮幢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了志珍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片橙垢。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伦糯,靈堂內(nèi)的尸體忽然破棺而出柜某,到底是詐尸還是另有隱情嗽元,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布喂击,位于F島的核電站剂癌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏翰绊。R本人自食惡果不足惜佩谷,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望监嗜。 院中可真熱鬧谐檀,春花似錦、人聲如沸秤茅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽框喳。三九已至课幕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間五垮,已是汗流浹背乍惊。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留放仗,地道東北人润绎。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像诞挨,于是被迫代替她去往敵國和親莉撇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,294評論 0 10
  • The Inner Game of Tennis W Timothy Gallwey Jonathan Cape ...
    網(wǎng)事_79a3閱讀 11,729評論 2 19
  • 題目 Radix (25)Given a pair of positive integers, for examp...
    某翁閱讀 213評論 0 0
  • 今天為六耳獼猴正身惶傻,真正的六耳獼猴其實就是孫悟空自己棍郎,真假美猴王其實是孫悟空自導(dǎo)自演的雙簧戲。這這出戲中最倒霉的是...
    秦家炎閱讀 583評論 0 1
  • 當(dāng)我收拾破碎银室,想去流浪的時候涂佃,卻發(fā)現(xiàn), 有些記憶早已深深地烙進(jìn)生命蜈敢, 從發(fā)生的那一刻起辜荠, 已經(jīng)融入靈魂 醒目, 如...
    清咖語陌閱讀 224評論 0 0