P1555 尴尬的数字(暴力+map)

Posted xu-daxia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1555 尴尬的数字(暴力+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 } 

 

以上是关于P1555 尴尬的数字(暴力+map)的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 128 最长连续序列

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

HDU 3131 One…Two…Five! (暴力搜索)

ACM_同余+暴力找规律

CSP核心代码片段记录