• 【PAT甲级】1010 Radix (25 分)(二分)


    题意:

    输入两个数可能包含小写字母,1或者2,进制大小。第三个数为代表第一个数是第四个数进制的,求第二个数等于第一个数时进制的大小,不可能则输出Impossible,第三个数为2代表第二个数是第四个数进制的,求第一个数等于第二个数时进制的大小,不可能则输出Impossible。数字的位数最多是十位。

    trick:

    进制可能很大,所以运算过程中可能会爆long long,不必担心,当成负数处理即可。

    AAAAAccepted code:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 string s1,s2;
     4 long long t,rad;
     5 int main(){
     6     cin>>s1>>s2>>t>>rad;
     7     if(t==2)
     8         swap(s1,s2);
     9     long long num1=0,num2=0;
    10     int len1=s1.size(),len2=s2.size();
    11     for(int i=0;i<len1;++i){
    12         num1*=rad;
    13         if(s1[i]>='0'&&s1[i]<='9')
    14             num1+=s1[i]-'0';
    15         else
    16             num1+=s1[i]-'a'+10;
    17     }
    18     int mx=0;
    19     for(int i=0;i<len2;++i)
    20         if(s2[i]>='0'&&s2[i]<='9')
    21             mx=max(mx,s2[i]-'0');
    22         else
    23             mx=max(mx,s2[i]-'a'+10);
    24     long long l=mx+1;
    25     long long r=max(l,num1);
    26     long long mid=0;
    27     while(l<=r){
    28         mid=(l+r)>>1;
    29         string x=s2;
    30         long long tmp=0;
    31         for(int i=0;i<len2;++i){
    32             tmp*=mid;
    33             if(x[i]>='0'&&x[i]<='9')
    34                 tmp+=x[i]-'0';
    35             else
    36                 tmp+=x[i]-'a'+10;
    37         }
    38         if(tmp>num1||tmp<0)//顺序写反会错
    39             r=mid-1;
    40         else if(tmp<num1)//顺序写反会错,因为溢出的话tmp小于0,一定小于num1
    41             l=mid+1;
    42         else{
    43             cout<<mid;
    44             return 0;
    45         }
    46     }
    47     cout<<"Impossible";
    48     return 0;
    49 }
    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    RefineDet by hs
    RFCN by hs
    经典排序算法总结(二)by Rose
    Libra R-CNN——“平衡学习” by Rose
    经典排序算法总结(一)by Rose
    注意力机制在MDNet跟踪算法中的应用 by leona
    Deep Sort 多目标跟踪算法总结-by Wilson
    tf.truncated_normal_initializer
    tf.add_to_collection方法
    tf.trainable_variables方法
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11228282.html
Copyright © 2020-2023  润新知