【2021暑期训练-2】9-5 连续因子
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。
输入格式:输入在一行中给出一个正整数 N(1<N<2^31)。
输出格式:首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。
输入样例:1630
输出样例:1235*6*7
思路用start来记录连乘的第一个因子,len来记录连续因子的长度,都初始化为0。如果start遍历之后仍未0,说明n在2-sqrt(n)范围之内没有因子,即n为素数,直接输出1和n就行了;否则输出[tart,start+len]
注意判断素数情况
代码12345678910111213141516171819202122232425#include <iostream>#include <cmath>using namespace std;int mai ...
【2021暑期训练-2】9-4 组合数的和
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。
输入格式:输入在一行中先给出 N(1 < N < 10),随后给出 N 个不同的非 0 个位数字。数字间以空格分隔。
输出格式:输出所有可能组合出来的2位数字的和。
输入样例:13 2 8 5
输出样例:1330
思路输入整数n,用数组a[n]存储n个数字,ans存储答案;因为n个数各不相同,所以情况较简单,直接让两个数字分别作为十位和各位相乘两次并相加。
代码12345678910111213141516#include <iostream>using namespace std;int main() { int n; cin >> n; int a[n]; for(int i = 0; i < n; i++) cin >> a[i]; int ans = 0; for(int i = 0; i & ...
【2021暑期训练-2】9-2 素数对猜想
让我们定义$d_n$为:$d_n=p_{n+1}−p_n$,其中$p_i$是第i个素数。显然有$d_1=1$,且对于n>1有$d_n$是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N($<10^5$),请计算不超过N的满足猜想的素数对的个数。
输入格式:输入在一行给出正整数N。
输出格式:在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:120
输出样例:14
思路定义i从2开始到遍历至n,每次判断i和i+2是否均为素数
代码12345678910111213141516171819202122232425262728#include <iostream>using namespace std;bool prime(int n) { //判断n是否为素数 if(n == 1) { return false; } for(int i = 2; i * i <= n; i++) { if(n % i == 0) { ...
每日分享day09-C++常用库函数
河北大学暑期程序设计训练每日知识分享-day09
每日分享——C++常用库函数
每日分享day08-正则表达式
河北大学暑期程序设计训练每日知识分享-day08
每日分享——正则表达式正则表达式是一种威力无比强大的武器,几乎在所有的程序设计语言里和计算机平台上都可以用它来完成各种复杂的文本处理工作。本书从简单的文本匹配开始,循序渐进地介绍了很多复杂内容,其中包括回溯引用、条件性求值和前后查找,等等。每章都为读者准备了许多简明又实用的示例,有助于全面、系统、快速掌握正则表达式,并运用它们去解决实际问题。
正则表达式多用于判断字符串是否满足某种特定格式,例如用户注册时输入邮箱,使用正则表达式技术就可以判断用户输入的邮箱是否合法。
给大家推荐一本讲解正则表达式的书籍——《正则表达式必知必会》,感兴趣的同学可以网上寻找电子版或者购买纸质版。必知必会系列的还有《MySql必知必会》等
每日分享day07-数组为何从0开始编号
河北大学暑期程序设计训练每日知识分享-day07
每日分享——数组为何从0开始编号为什么大多数编程语言中,数组要从 0 开始编号,而不是从 1 开始呢?从数组存储的内存模型上来看,“下标”最确切的定义应该是“偏移(offset)”。如果用 a 来表示数组的首地址,a[0]就是偏移为 0 的位置,也就是首地址,a[k]就表示偏移 k 个 type_size 的位置,所以计算 a[k]的内存地址只需要用这个公式:a[k]_address = base_address + k * type_size但是,如果数组从 1 开始计数,那我们计算数组元素 a[k]的内存地址就会变为:a[k]_address = base_address + (k-1) * type_size 对比两个公式,我们不难发现,从 1 开始编号,每次随机访问数组元素都多了一次减法运算,对于 CPU 来说,就是多了一次减法指令。数组作为非常基础的数据结构,通过下标随机访问数组元素又是其非常基础的编程操作,效率的优化就要尽可能做到极致。所以为了减少一次减法操作,数组选择了从 0 开始编号,而不是从 1 开始。C 语言设计者用 ...
每日分享day06-编程之美
河北大学暑期程序设计训练每日知识分享-day06
每日分享——《编程之美》《编程之美》这本书收集了约60道算法和程序设计题目,这些题目大部分在近年的笔试、面试中出现过,或者是被微软员工热烈讨论过。作者试图从书中各种有趣的问题出发,引导读者发现问题,分析问题,解决问题,寻找更优的解法。书中绝大部分题目都提供了详细的解说。 每道题目后面还有一至两道扩展问题,供读者进一步钻研。书中还讲述了面试的各种小故事,告诉读者微软需要什么样的技术人才,重视什么样的能力,如何甄别人才。回答读者关于IT业面试,招聘,职业发展的疑问。这本书的很多题目会出现在IT 行业的各种笔试、面试中,但这本书更深层的意义在于引导读者思考,和读者共享思考之乐,编程之美。
【2021暑期训练-1】7-6 校验ISBN-10编码
图书使用国际标准书号(International Standard Book Number (ISBN-10))来编码,是一个 10 位码。前 9 位(0−9之间的数字)分别用于表示语言、出版商和 图书信息。第 10 位是校验位,可以是0−9之间的数字或者是字母 X (用于表示数字10);
ISBN-10码可以通过下面方法进行验证:
首先,对ISBN-10码的各个位按下面的计算式求和: 1×x1+2×x2+3×x3+4×x4⋯+9×x9+10×x10
将求和的结果对11取余数,如果余为0,则说明该ISBN-10码是一个有效码,否则,就不是一个有效的ISBN-10码。
现输入一批ISBN-10图书编码,请你验证该编码是否是有效的国际标准书号。
输入格式:输入第一行给出正整数N(≤10)是输入的ISBN-10图书编号的个数。随后N行,每行给出1个10位的ISBN-10图书编号。
输出格式:按照输入的顺序每行输出1个有问题的ISBN-10编码。这里并不检验前9位是否合理,只检查前9位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出 All passed。
输入样例01:1 ...
【2021暑期训练-1】7-4 A-B
输入一个字符串(包括大小写字母和空格),除去空格输出在字符串中出现过的字符。
输入格式:输入一个字符串
输出格式:输出在字符串中出现过的字符,每个字符打印一次,按字母顺序打印(注意:空格不算,大小写字符算不同字符)。打印时按字母的顺序,大写在前,小写在后。
输入样例:在这里给出一组输入。例如:
1This is a good hat
输出样例:在这里给出相应的输出。例如:
1Tadghiost
思路遍历字符串A,针对A中的每个字符用string的find函数判断B中知否存在该字符,若不存在输出该字符。
代码12345678910111213#include<iostream>#include<cstring>#include<algorithm>using namespace std;int main(){ string A,B; getline(cin,A); getline(cin,B); for(int i=0;i<A.size();i++){ if(B.find(A[i])==B.npos) cout<& ...
【2021暑期训练-1】7-5 单词加密解析
输入一个英文单词(由六个小写英文字母组成),按照下列过程将该单词加密:先将英文单词中的小写字母转换为对应的大写字母,再将该大写字母的ASCII码对10整除后取其余数,从而得到一个六位整数密码。
输入格式:输入在一行中给出1个由六个小写英文字母组成的英文单词。
输出格式:按照规则转换成一个六位整数密码,并输出转换的过程。
输入样例:1friday
输出样例:123456f->F->0r->R->2i->I->3d->D->8a->A->5y->Y->9
思路在ASCII代码表中每一个大写字母比它相应的小写字母的ASCII码小32
ASCII范围:a-z:97-122 A-Z:65-90
代码1234567891011#include<iostream>#include<cstring>using namespace std;int main(){ string s; cin>>s; for(int i=0;i<s.size();i++) ...