定制化网站开发的好处,动画制作专业电脑推荐,上海集酷网站,四川建设网app下载题目描述#xff1a;每个人有自己的lucky number#xff0c;小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话#xff0c;都是他的lucky number。但是#xff0c;现在这个序列很大#xff0c;他无法快速找到所有lucky number。既然这…题目描述每个人有自己的lucky number小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话都是他的lucky number。但是现在这个序列很大他无法快速找到所有lucky number。既然这样他就想找到那些不是lucky number。输入 输入有两行. 第一行有n和m。n表示出现次数为n的是lucky numberm表示序列的长度。2n10,m10^6m%n!0。 第二行为序列元素每个元素都是正整数。 输出输出那个不是lucky number的数。题目保证非lucky number只有一个。样例输入 2 5
1 1 2 2 3样例输出 3发现许多重复几次的问题用位运算都是很好的办法本题把每一个数转化为32位的二进制数代码如下 1 #include cstdio2 #include cstring3 4 int n, m;5 int num;6 int wnum[33];7 8 int main(int argc, char const *argv[])9 {
10 while(scanf(%d %d,n,m) ! EOF) {
11
12 memset(wnum, 0, sizeof(wnum));
13 int t m % n;
14 while(m--){
15 scanf(%d,num);
16 for(int j 0; j 32; j) {
17 int p num1;
18 wnum[j] wnum[j] p;
19 num num 1;
20 }
21 }
22 for(int j 0; j 32; j) {
23 wnum[j] wnum[j] % n;
24 }
25
26 int ans 0;
27
28 for(int j 31; j 0; j--) {
29 ans ans * 2 wnum[j]/t;
30 }
31 printf(%d\n,ans);
32 }
33 return 0;
34 } 比如 2 5 1 1 2 2 3 结果是3 编码得到 00000001 00000001 00000010 00000010 00000011因为数字比较小省略了前面3位即24个0 求和 00000033 取余 00000011 出现了m%n 1次 结果为3 另外设那个不为lucky_number的数为x,有 x % n sum%n ym%n *x sum(others) sum 不知道由这两点能不能启发出更好的办法 转载于:https://www.cnblogs.com/jasonJie/p/5811729.html