UDP广播协议叫吃饭


私信TA

用户名:Mustenaka

访问量:149561

签 名:

个人博客www.mustenaka.cn

等  级
排  名 13
经  验 25381
参赛次数 8
文章发表 197
年  龄 3
在职情况 学生
学  校 Sky_box
专  业 NE

  自我简介:

欢迎光临我的博客www.mustenaka.cn,Python,C#,U3D,C/C++开发合作可以找我

解题思路:
    利用map+二进制的压缩,通过异或操作写的这题,不知道怎么回事总是不通过,有没有大牛帮我看一下问题出在哪里了的?


参考代码:

#include<bits/stdc++.h>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
const int maxn=1005;
map<int,int> mmp;
int n;
ll ans=0;
char input[maxn]={0},output[maxn]={0};
/*
八数码管 各段小的以二进制表示
     -
	| |
	 -
	| |
	 -   (好丑啊)
分别是二进制第  
	 0            
	1 2
	 3
	4 5
	 6    位
以十进制表示的话就是
	 1
	2 4
	 8
    16 32
	 64	
*/
void loading(){
	mmp[0]=(1+2+4+16+32+64);
	mmp[1]=(4+32);
	mmp[2]=(1+4+8+16+64);
	mmp[3]=(1+4+8+32+64);
	mmp[4]=(2+4+8+32);
	mmp[5]=(1+2+8+32+64);
	mmp[6]=(1+2+8+16+32+64);
	mmp[7]=(1+4+32);
	mmp[8]=(1+2+4+8+16+32+64);
	mmp[9]=(1+2+4+6+8+32+64);
} 
int main(){
	hh;
	loading();
	cin>>n>>input>>output;
	for(int i=0;i<n;i++){
		int t1=input[i]-'0',t2=output[i]-'0';
		int cnt=mmp[t1]^mmp[t2];  //异或操作
		while(cnt){
			if(cnt&(1)!=0){
				ans++;
			}
			cnt>>=1;
		}
	}
	cout<<ans<<endl;
	return 0;
}

有点犯糊涂了,loading那里面写的数据一定要看仔细,否则就象我这样总是错误了....

 

0.0分

0 人评分

  评论区

  • «
  • »