zoukankan      html  css  js  c++  java
  • luoguP1555 尴尬的数字(暴力+map)

    题意

    题解

    枚举每一个可能的二进制数。扔到一个map里

    再枚举每一个可能的三进制数看map有没有就行了

    反正就是很水

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<algorithm>
     6 #include<map>
     7 using namespace std;
     8 map<long long,bool>ma;
     9 char s1[20000],s2[20000];
    10 long long ksm(long long x,long long b){
    11     long long tmp=1;
    12     while(b){
    13         if(b&1){
    14             tmp*=x;
    15         }
    16         b>>=1;
    17         x=x*x;
    18     }
    19     return tmp;
    20 }
    21 void work(char s[]){
    22     long long len=strlen(s+1);
    23     long long tmp=0;
    24     for(long long i=1;i<=len;i++){
    25         tmp=tmp*2+s[i]-'0';
    26     }
    27     for(long long i=1;i<=len;i++){
    28         long long ans=tmp+(((s[i]-'0')^1)-(s[i]-'0'))*(1<<len-i);
    29         ma[ans]=1;
    30     }
    31 }
    32 void work1(char s[]){
    33     long long len=strlen(s+1);
    34     long long tmp=0;
    35     for(long long i=1;i<=len;i++){
    36         tmp=tmp*3+s[i]-'0';
    37     }
    38     for(long long i=1;i<=len;i++){
    39         for(long long j=0;j<=2;j++){
    40             if(j==s[i]-'0')continue;
    41             long long ans=tmp+(j-(s[i]-'0'))*ksm(3,len-i);
    42             if(ma[ans]==1){
    43                 printf("%lld",ans);
    44                 return ;
    45             }
    46         }
    47     }
    48 }
    49 int main(){
    50     scanf("%s",s1+1);
    51     scanf("%s",s2+1);
    52     work(s1);
    53     work1(s2);
    54     return 0;
    55 } 
  • 相关阅读:
    利用runtime检測这个对象是否存在某属性?
    Android Studio 使用 SVN 必然遇到问题:commit ** File out of data 问题解决方法
    JPA測试实例
    pat(A) 1063. Set Similarity(STL)
    @Override用在哪儿
    Highcharts数据表示(3)
    #pragma pack (n) 惹的祸
    C++二阶构造函数
    使用自定义的控件
    C++ explicit
  • 原文地址:https://www.cnblogs.com/Xu-daxia/p/9564610.html
Copyright © 2011-2022 走看看