当前位置: 首页> 文旅> 艺术 > 建设摩托车官网报价_建站程序大全_扬州百度推广公司_做网页

建设摩托车官网报价_建站程序大全_扬州百度推广公司_做网页

时间:2025/9/11 20:22:02来源:https://blog.csdn.net/weixin_51735301/article/details/143220461 浏览次数:0次
建设摩托车官网报价_建站程序大全_扬州百度推广公司_做网页

 BigInteger:

import java.util.Scanner;
import java.math.BigInteger;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String N1 = in.next();String N2 = in.next();int tag = in.nextInt();long radix = in.nextLong();  // 初始进制BigInteger tgt = BigInteger.ZERO;if (tag == 1) {tgt = convert10(N1, radix);} else {tgt = convert10(N2, radix);}String process = (tag == 1) ? N2 : N1;BigInteger res = BigInteger.valueOf(-1);long maxDigit = getRange(process) + 1;  // 可能的最小基数BigInteger l = BigInteger.valueOf(maxDigit);BigInteger r = tgt.max(BigInteger.valueOf(maxDigit));while (l.compareTo(r) <= 0) {  // 左闭右闭区间BigInteger mid = l.add(r).divide(BigInteger.TWO);BigInteger cur = convert10(process, mid.longValue());if (cur.equals(tgt)) {res = mid;break;} else if (cur.compareTo(tgt) > 0) {r = mid.subtract(BigInteger.ONE);  // cur 超过 tgt 或发生溢出,缩小右边界} else {l = mid.add(BigInteger.ONE);  // cur 小于 tgt,增加左边界}}if (res.equals(BigInteger.valueOf(-1))) {System.out.println("Impossible");} else {System.out.println(res);}}// 将字符串 s 按照 radix 进制转换为 10 进制数public static BigInteger convert10(String s, long radix) {BigInteger res = BigInteger.ZERO;BigInteger base = BigInteger.ONE;BigInteger bigRadix = BigInteger.valueOf(radix);for (int i = s.length() - 1; i >= 0; i--) {char c = s.charAt(i);BigInteger value;if (Character.isDigit(c)) {value = BigInteger.valueOf(c - '0');} else {value = BigInteger.valueOf(c - 'a' + 10);}res = res.add(value.multiply(base));base = base.multiply(bigRadix);}return res;}// 获取字符串中最大的字符所代表的数值,用于确定最小的可能进制public static long getRange(String s) {long maxDigit = -1;for (char c : s.toCharArray()) {if (Character.isDigit(c)) {maxDigit = Math.max(maxDigit, c - '0');  // 数字字符} else if (Character.isLetter(c)) {maxDigit = Math.max(maxDigit, c - 'a' + 10);  // 字母字符}}return maxDigit;}
}

long:

import java.util.Scanner;
import java.math.BigInteger;
public class Main{public static void main(String[] args){Scanner in = new Scanner(System.in);String N1 = in.next();String N2 = in.next();int tag = in.nextInt();long radix = (long) in.nextInt();long tgt = -1;if(tag == 1){tgt = convert10(N1, radix);}else{tgt = convert10(N2, radix);}String process = tag == 1 ? N2 : N1;long res = -1;long l = getRange(process) + 1;long r = Math.max(tgt, l);while(l <= r){//左闭右闭long mid = (l+r) >> 1;long cur = convert10(process, mid);if(cur == tgt){res = mid;break;}else if(cur == -1 || cur > tgt){r = mid - 1;}else{l = mid + 1;}}if(res == -1){System.out.println("Impossible");}else{System.out.println(res);}}public static long convert10(String s, long radix){char[] ch = s.toCharArray();long res = 0;long base = 1;for(int i = ch.length-1; i >= 0; i--){if(0 <= ch[i]-'0' && ch[i]-'0' <= 9){res += base * (ch[i]-'0');}else if(0 <= ch[i]-'a' && ch[i]-'a' <= 25){res += base * (ch[i]-'a'+10);}base *= radix;if(res < 0 || base < 0){return -1;}}return res;}public static long getRange(String s) {char[] ch = s.toCharArray();long maxDigit = -1;for (char c : ch) {if (Character.isDigit(c)) {maxDigit = Math.max(maxDigit, c - '0');  // 处理数字} else if (Character.isLetter(c)) {maxDigit = Math.max(maxDigit, c - 'a' + 10);  // 处理字母}}return maxDigit;}
}

关键字:建设摩托车官网报价_建站程序大全_扬州百度推广公司_做网页

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: