题目一:幸运数

Description

幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。

首先从1开始写出自然数1,2,3,4,5,6,....

1 就是第一个幸运数。

我们从2这个数开始。把所有序号能被2整除的项删除,变为:

1 _ 3 _ 5 _ 7 _ 9 ....

把它们缩紧,重新记序,为:

1 3 5 7 9 .... 。这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是5,11, 17, ...

此时7为第3个幸运数,然后再删去序号位置能被7整除的(19,39,...)

最后剩下的序列类似:

1, 3, 7, 9, 13, 15, 21, 25, 31, 33, 37, 43, 49, 51, 63, 67, 69, 73, 75, 79, ...

Input

输入两个正整数m n, 用空格分开 (m < n < 1000*1000)

Output

程序输出 位于m和n之间的幸运数的个数(不包含m和n)。

Sample Input 1

1 20

Sample Output 1

5

思路:

题目中写出,1作为第一个幸运数,但是是用2处理的。利用2将数列处理完毕后,3才变成第二个幸运数,后续就正常了。所以,先将利用2处理好的数列这种特殊先处理出来,然后用循环进行常规处理在循环中利用变量len统计新的幸运数队列的长度,然后调节for循环次数即可。代码如下:

#include<iostream>
using namespace std;
const int N = 1e6 + 30;int n, m, cnt;
int a[N], b[N];int main()
{cin >> n >> m;int len = 0, pos = 0;for(int i = 1; i <= m; i ++) a[++ len] = i;for(int i = 1; i <= len; i ++)if(i % a[2] != 0)b[++ pos] = a[i];len = 0;for(int i = 2; i <= pos; i ++){int idx = b[i];for(int j = 1; j <= pos; j ++)if(j % idx != 0)b[++ len] = b[j];pos = len;len = 0;}for(int i = 1; i <= pos; i ++)if(b[i] > n && b[i] < m)cnt ++;cout << cnt;return 0;
}

题目二:P1003

Description

作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词。不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检查。请编写一个程序,发现这种调整过顺序的关键词。程序的输入有两行,第一行是关键词列表,第二行是待检查的句子。程序的输出为在该句子中所找到的经过顺序调整的关键词。(单词全部为小写,单词之间以一个空格分隔,每一行的单词个数不限)

Input

第一行是关键词列表,第二行是待检查的句子。

Output

经过顺序调整的关键词。(单词全部为小写,单词之间以一个空格分隔,每一行的单词个数不限)

Sample Input 1

guns mines missiles
aameric ssell snug dan iimsssle ot sit neeemis

Sample Output 1

guns missiles

思路:

对于退出一行的输入,可利用cin.get() == '\n'来判断是否break。利用vector结合map容器来存储数据。利用可变长数组以及map以字典序自动排序的性质。对于每一个单词,都存储三个属性:ASCII码值(字符串码值采取每个字符码值和)、字符、字符出现次数判断部分,对于任意两个单词,若ASCII码值相等,且字符种类以及出现次数均相同,则判定为同一单词。代码如下:

#include<map>
#include<vector>
#include<iostream>
using namespace std;
const int N = 1e5 + 10;int pos, idx;
string date[N];
map<string, int> output;
vector<pair<int, map<char, int>>> k, c;int main()
{string str;while (cin >> str){int H = 0;map<char, int> m;for (int i = 0; i < str.length(); i++)m[str[i]]++, H += str[i];k.push_back({ H,m });date[pos++] = str;if (cin.get() == '\n')break;}while (cin >> str){int H = 0;map<char, int> m;for (int i = 0; i < str.length(); i++)m[str[i]]++, H += str[i];c.push_back({ H,m });if (cin.get() == '\n')break;}vector<pair<int, map<char, int>>>::iterator i = c.begin();while(i != c.end()){vector<pair<int, map<char, int>>>::iterator j = k.begin();idx = 0;while(j != k.end()){if ((*i).first == (*j).first){bool print = true;map<char, int>::iterator itm = (*j).second.begin(), itn = (*i).second.begin();while(itm != (*j).second.end()){if ((*itm).first == (*itn).first){if((*itm).second != (*itn).second)print = false;}else print = false;itm++;itn++;}if (print)output[date[idx]]++;}idx++;j++;}i++;}map<string, int>::iterator it = output.begin();while(it != output.end()){cout << (*it).first << " ";it++;}return 0;
}

题目三:找素数

Description

给定区间[L, R] , 请计算区间中素数的个数。

Input

两个数L和R。

Output

一行,区间中素数的个数。

Sample Input 1

2 11

Sample Output 1

5

思路:

代码如下:

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
const int inf=2147483647,N=1000010;
int l,r;
int prim[N],cnt;
bool st[N];
void init()
{for(int i=2;i<=sqrt(inf);i++){if(!st[i]) prim[cnt++]=i;for(int j=0;prim[j]<=sqrt(inf)/i;j++){st[prim[j]*i]=1;if(i%prim[j]==0) break;}}
}
int main()
{init();memset(st,0,sizeof st);cin>>l>>r;for(int i=0;i<cnt;i++){for(int j=(l+prim[i]-1)/prim[i];j<=r/prim[i];j++)if(j!=1)st[prim[i]*j-l]=1;}int ans=0;for(int i=0;i<=r-l;i++)ans+=!st[i];cout<<ans;return 0;
}

题目四:凶手

Description

巴斯维克命案抓住了六个嫌疑犯,他们的口供如下:

A:我不是罪犯

B:A、C中有一个是罪犯

C:A和B说了假话

D:C和F说了假话

E:其他五个人中,只有A和D说了真话

F:我是罪犯

他们中只有一半说了真话,凶手只有一个。

本题可能有多种可能性,即正确答案(找到唯一的凶手)可能有多个,但每一个可能的答案(某一个是凶手)都满足上述口供。

请编程找出可能的凶手输出。

样例:(假设唯一的凶手是A或者D或者E,则输出结果为三行,按字母顺序依次输出)

A

D

E

Input

如题所示。

Output

如题所示。

代码如下:

#include<iostream>
#include<cstring>
using namespace std;int cnt;
bool is_c[6];bool A()
{return is_c[0];
}bool B()
{return is_c[1] || is_c[2];
}bool C()
{return A() && B();
}bool F()
{return is_c[5];
}bool D()
{return C() && F();
}bool E()
{return A() && D();
}int main()
{memset(is_c, false, sizeof is_c);for(int i = 0; i < 6; i ++){cnt = 0;is_c[i] = true;if(A()) cnt++;if(B()) cnt++;if(C()) cnt++;if(D()) cnt++;if(E()) cnt++;if(F()) cnt++;if(cnt == 3) printf("%c\n", i + 'A');}return 0;
}

[C++]H106OJ-第二周练习总结相关推荐

  1. 20165334 四则运算阶段性总结(第二周)

    四则运算阶段性总结(第二周) 结对对象 学号 :20165334 姓名 : 李天龙 担任角色 (驾驶员):李天龙 (副驾驶):陈国超 一.实验实现步骤 整数计算类 分数计算类 自动生成题目的类 测试结 ...

  2. 20155222 第二周测试

    20155222 第二周测试 1 vi 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助文档 提交vi编辑过程 ...

  3. Emojify - v2 吴恩达老师深度学习第五课第二周编程作业2

    吴恩达老师深度学习第五课第二周编程作业2,包含答案! Emojify! Welcome to the second assignment of Week 2. You are going to use ...

  4. Operations on word vectors-v2 吴恩达老师深度学习课程第五课第二周编程作业1

    吴恩达老师深度学习课程第五课(RNN)第二周编程作业1, 包含答案 Operations on word vectors Welcome to your first assignment of thi ...

  5. Linux第二周学习笔记(7)

    Linux第二周学习笔记(7) 2.13 文档查看cat_more_less_head_tail (1). cat命令 cat命令:用于查看一个文件的内容并将其显示在屏幕上 cat-A命令:显示所有的 ...

  6. 2月第二周.COM增近12万 ×××域名.XXX减122个

    IDC评述网(idcps.com)02月18日报道:根据Registrar Stats实时数据,截至2014年2月16日,全球.COM域名注册总量已达到了112,369,017个,环比上周新增近12万 ...

  7. 机电传动控制第二周学习笔记

    机电传动控制第二周学习笔记 经过第二周的学习,我了解了电机的发展历史.从奥斯特发现电生磁的现象,到法拉第电磁回转实验,再到后来的电机一步步的发展至今.它充满了巧合,但是它又必然一步步向更完美走去.电机 ...

  8. Linux第二周学习笔记(11)

    Linux第二周学习笔记(11) 2.17 隐藏权限lsattr_chattr chattr命令:是设置吟唱隐藏权限的命令,更改Linux文件系统上的文件属性. 参数说明: A:表示文件或目录的ati ...

  9. LINUX内核分析第二周学习总结——操作系统是如何工作的

    LINUX内核分析第二周学习总结--操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  10. 分享Kali Linux 2017年第二周镜像文件

    分享Kali Linux 2017年第二周镜像文件 Kali Linux官方于1月10日发布2017年的第2周镜像.这也是从去年12月11日后,第一次周更新.这次更新保持以往规律,仍然是11个镜像文件 ...

最新文章

  1. Python是一门什么样的语言
  2. collections 使用教程
  3. sql脚本过大,无法打开的解决方法
  4. javabean和java类_java对象 POJO和JavaBean的区别
  5. 封装jQuery Validate扩展验证方法
  6. java 通过TCP\UDP 协议实现多人聊天,点对点,文件传送-----分服务器端和客户端...
  7. Keil5下载及安装
  8. 能耗监测管理系统服务器,能源管理系统:能耗监测系统解决方案
  9. ubuntu串口助手推荐——comtool
  10. 重复渐变过渡 百分比
  11. 数据库中delete和drop的区别
  12. 95%置信区间的含义_置信度为95%的置信区间什么意思
  13. 使用Quick BI 制作企业数据分析报表
  14. SQLPro for SQLite for Mac(SQLite编辑器)
  15. Android Q notification创建发送流程-framework篇
  16. AP5126 DC/DC 平均电流型 降压恒流驱动芯片
  17. 基于腾讯地图定位组件实现周边公用厕所远近排序分布图
  18. 超级计算机有关文献,超级计算机系统性能平衡性预先评价方法研究
  19. SHEEL-远程调用执行命令模板
  20. CAN通讯程序C语言,嵌入式C语言环境下的CAN总线通讯协议

热门文章

  1. java和javascript有什么区别_javascript与java有什么区别?
  2. 星际争霸2-数据编辑器-菜鸟入门
  3. Oracle 服务器 客户端 US7ASCII、 UTF8字符编码问题
  4. c# 连接 oracle数据库字符集为us7ascii的问题,实验了好几个方案 成功了
  5. app版本更新的五种实现方式
  6. 想转行做数据产品经理?这份书单赶紧收藏起来
  7. VIVO内置应用卸载指南(IQOO NEO5为例)
  8. 什么是yum源,yum的工作原理又是什么
  9. 知乎网站2010年12月开放,三个月后获得了李开复的天使投资
  10. mathmatica矩阵的运算,相乘,转置,求逆矩阵