题目描述:
每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然这样,他就想找到那些不是lucky number。
输入:
输入有两行.
第一行有n和m。n表示出现次数为n的是lucky number,m表示序列的长度。2<=n<=10,m<=10^6,m%n!=0。
第二行为序列元素,每个元素都是正整数。
输出:
输出那个不是lucky number的数。题目保证非lucky number只有一个。
样例输入:
2 5
1 1 2 2 3
样例输出:
3

发现许多重复几次的问题用位运算都是很好的办法,本题把每一个数转化为32位的二进制数
代码如下
 #include <cstdio>
#include <cstring> int n, m;
int num;
int wnum[]; int main(int argc, char const *argv[])
{
while(scanf("%d %d",&n,&m) != EOF) { memset(wnum, , sizeof(wnum));
int t = m % n;
while(m--){
scanf("%d",&num);
for(int j = ; j < ; j++) {
int p = num&;
wnum[j] = wnum[j] + p;
num = num >> ;
}
}
for(int j = ; j < ; j++) {
wnum[j] = wnum[j] % n;
} int ans = ; for(int j = ; j >= ; j--) {
ans = ans * + wnum[j]/t;
}
printf("%d\n",ans);
}
return ;
}

比如

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 = y
m%n *x +sum(others) = sum

不知道由这两点能不能启发出更好的办法

最新文章

  1. View Controller Relationships
  2. C#-WebForm-★ 制作图片验证码 ★
  3. Ionic 常见问题及解决方案
  4. 洛谷 P1012 拼数 Label:续命模拟QAQ
  5. left join 过滤条件写在on后面和写在where 后面的区别
  6. 169. Majority Element My Submissions Question
  7. spring定时器 @Scheduled
  8. Memcached Java Client with sample program--reference
  9. 【待解决】编译V8引擎出错-snapshot.cc
  10. html5插入视频
  11. struts1 logic:iterate bean:write标签使用
  12. abowman
  13. [C++] C语言及C++语言中包含的头文件名称,及作用
  14. H5新标签(适合新手入门)
  15. laravel请求到响应的生命周期
  16. 一次练习 发现的问题,malloc free 无效;findfirstfile失败,writefile失败的原因
  17. Sliding Window Median LT480
  18. 基于VRML的虚拟校园漫游系统
  19. css常见知识点
  20. HDU 3966 树链剖分+树状数组 模板

热门文章

  1. 使用poi或jxl,通过java读写xls、xlsx文档
  2. 64位Windows系统下32位应用程序连接MySql
  3. hihoCoder #1050 : 树中的最长路
  4. 2018.4.16 Java多线程实现龟兔赛跑
  5. java ArrayList remove
  6. php面试相关
  7. bootstrap 警告(Alerts)
  8. HTML5&lt;nav&gt;元素
  9. Java中List集合排序的方法 比较器的使用 根据学生对象数学 语文 英语成绩总和进行sort排序
  10. echarts事件中获取当前实例