A1010

Posted tao7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A1010相关的知识,希望对你有一定的参考价值。

#include<iostream>
#include<cstdio>
#include<cctype>
#include<math.h>
#include <algorithm>
using namespace std;
long long loop(string s,long long min,long long sum1){
	long long max=sum1,sum2=0;
	while(max>=min){
		long long mid=(max+min)/2;
		long long rad=1;
		sum2=0;
		for(int i=s.length()-1;i>=0;i--){
			sum2+=(long long)((s[i]-‘0‘>9?s[i]-‘a‘+10:s[i]-‘0‘)*rad);
			rad*=mid;
		}
		if(sum2>sum1||sum2<0)
			max=mid-1;		
		else if(sum2<sum1) min=mid+1;
		else return mid;
	}
	return -1;
}
int main(){
	string s1,s2;
	int tag;
	long long rad=1,radix;
	cin>>s1>>s2>>tag>>radix;
	if(tag==2) swap(s1,s2);
	long long sum1=0;
	for(int i=s1.length()-1;i>=0;i--){
		sum1+=(long long)(s1[i]-‘0‘>9?s1[i]-‘a‘+10:s1[i]-‘0‘)*rad; 
		rad*=radix;
	}
	char c=*max_element(s2.begin(),s2.end());
	long long min=(c-‘0‘>9?c-‘a‘+10:c-‘0‘);
	if(loop(s2,min+1,sum1)==-1) cout<<"Impossible";
	else cout<< loop(s2,min+1,sum1);
	return 0;
} 

  开始使用的是for的暴力枚举,但是在最终会有一个测试点没法通过,一个测试点运行超时,于是就按照网上大多数的方法采用二分查找,但是还是有一个测试点无法通过,我已经考虑到了数值溢出的情况了啊

以上是关于A1010的主要内容,如果未能解决你的问题,请参考以下文章

PAT 甲级 A1010 (2019/02/20)

A1010 Radix (25 分)

ch03AddSub.asm(45):致命错误 A1010:不匹配的块嵌套:IsPrime

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js