zoukankan      html  css  js  c++  java
  • 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的暴力枚举,但是在最终会有一个测试点没法通过,一个测试点运行超时,于是就按照网上大多数的方法采用二分查找,但是还是有一个测试点无法通过,我已经考虑到了数值溢出的情况了啊

  • 相关阅读:
    [1] Tornado Todo Day0
    [0] Tornado Todo 开篇
    RNSS和RDSS
    国密随机数检测--2/15 块内频数检测
    国密随机数检测--1/15 单比特频数检测
    FPGA实用通信协议之IIC
    压缩感知(十)
    压缩感知(九)
    压缩感知(八)
    压缩感知(七)
  • 原文地址:https://www.cnblogs.com/tao7/p/12194918.html
Copyright © 2011-2022 走看看