首页 > 其他 > 详细

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

时间:2018-08-31 11:21:35      阅读:189      评论:0      收藏:0      [点我收藏+]

题意

技术分享图片

题解

枚举每一个可能的二进制数。扔到一个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)

原文:https://www.cnblogs.com/Xu-daxia/p/9564610.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!