日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1010 Radix (25 分)【难度: 难 / 知识点: 二分查找】

發(fā)布時間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1010 Radix (25 分)【难度: 难 / 知识点: 二分查找】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


https://pintia.cn/problem-sets/994805342720868352/problems/994805507225665536
注意: 答案可能不是[2,36] 而是一個非常大的數(shù)
確定的數(shù)最大可能為: zzzzzzzzzz(36) 約為3610等于3,656,158,440,062,976<1e18 不會爆long long的

#include<bits/stdc++.h> using namespace std; typedef unsigned long long int LL; string a,b,k; int d; LL get(char a) {return a<='9'?a-'0':a-'a'+10;} //獲取當前位的數(shù)字 LL D(string s,LL d)//d轉(zhuǎn)換成10進制 {LL sum=0;for(int i=0;i<s.size();i++) {if((double)sum>(1e18*1.0-get(s[i]))/d) return 1e18;//數(shù)已經(jīng)超1e18了直接返回1e18即可 sum=sum*d+get(s[i]);}return sum; } bool check(string a,string b,int d) {LL sum=D(a,d);LL l=0,r=1e12;//最坑的一個點7,答案是爆int的 for(LL i=0;i<b.size();i++) l=max(l,get(b[i]));l=l+1;while(l<r){LL mid=l+r>>1;LL temp=D(b,mid);if(temp>=sum) r=mid;else l=mid+1;}if(D(b,l)!=sum) return false;cout<<l<<endl;return true; } int main(void) {cin>>a>>b>>k>>d;if(k=="1"&&check(a,b,d)) return 0; if(k=="2"&&check(b,a,d)) return 0;cout<<"Impossible";return 0; }

總結(jié)

以上是生活随笔為你收集整理的1010 Radix (25 分)【难度: 难 / 知识点: 二分查找】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。