功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(如180的质因子为2 2 3 3 5 ),
最后一个数后面也要有空格。
多组输入,每组输入一个整数n(1 每组数据输出一行。 180 2 2 3 3 5 2到sqrt(n)循环,判断i是否能够整除n,如果能循环除i i=2;i * i<=n;++i //每次被除,n都会改变,但如果i*i大于n,也就是i大于sqrt(n)说明n已经是质数,直接输出就好 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。 多组输入,每组输入一个正浮点数值。 每组输出该数值的近似整数值。 5.5 6 将n加0.5再强转舍去小数 n*10/10得到小数点后第一个数,判断一下是否大于等于5 数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。 先输入键值对的个数n; 输出合并后的键值对(多行)。 4 0 3 用map储存每一种index的value 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。 多组输入,每行输入一个int型整数。 按照从右向左的阅读顺序,每组数据返回一个不含重复数字的新的整数,注意去除前导0。 9876673 37689 按题目要求从右至左遍历n,用一个变量标记是否输出过,输出过才能输出0(去除前导0) 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。 输入N个字符,字符在ACSII码范围内。(1<=N<=1e5) 输出范围在(0~127)字符的个数。 abc 3 判断字符是否属于区间(0,127) 给出 N 个点,M 条边的有向图,对于每个点 v,求 A(v) 表示从点 v 出发,能到达的编号最大的点。 第 1 行,2 个整数 N,M。 接下来 M 行,每行 2 个整数,Ui,Vi表示边(Ui,Vi)。点用 1,2,…,N 编号。(1≤N,M≤105) N 个整数 A(1),A(2),⋯,A(N)。 4 3 4 4 3 4 可能有环,正向建边遍历很麻烦。 给出序列A1,A2,AN求1≤i≤j≤N∑(Ai⊕Ai+1⊕⋯⊕Aj)的值。其中,⊕ 表示按位异或。 第 1 行,1 个整数 N。 第 2 行,N 个整数A1,A2,AN 。(1≤N≤105,0≤Ai≤109) 1 个整数。 2 6 二进制和前缀思想 对于序列 A,它的逆序对数定义为满足i 第一行包含两个整数 n 和 m 共 m 行,表示第 i 次删数前整个序列的逆序对总个数。 5 4 5 解法较多,树套树什么的 二维偏序问题: 但这里需要删除怎么办呢 第一次看到实现的代码确实很令人头疼~我也是看了很久才弄懂输出
每行按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。样例输入
样例输出
思路
//如果能整除,这个i肯定是质数。
//反证法:如果不是,那在i前,n会被i的因子除,i也就不能整除n了
//反证法:如果i整除n而且i>sqrt(n)也就是 i * j=n,j也就小于sqrt(n)在i之前就会遍历到j,所以不成立#include
问题 B: 取近似值
题目描述
输入
输出
样例输入
样例输出
代码1
#include
代码2
#include
问题 C: 合并表记录
题目描述
输入
然后输入成对的index和value值,以空格隔开。
题目保证n<=1e5,且index,value均在int范围输出
样例输入
0 1
0 2
1 2
3 4样例输出
1 2
3 4思路
数组的话比较麻烦,可能有负的index,而且如果数据很极限有-100000000 和100000000那会处理不了#include
问题 D: 提取不重复的整数
题目描述
输入
输出
样例输入
样例输出
思路
ps:1010应该输出1#include
问题 E: 字符个数统计
题目描述
输入
输出
样例输入
样例输出
思路
再用数组标记字符是否累加过,没有则ans++,再标记#include
问题 F: Graph
题目描述
输入
输出
样例输入
1 2
2 4
4 3样例输出
思路
考虑反向建边,编号从大到小遍历进行dfs,将当前编号能到达且未被遍历到的点标记为当前编号
如果dfs的时候,一个点已经被标记过了说明他能到比当前dfs的编号更大或者相等的点,直接return#include
问题 G: Sequence
题目描述
输入
输出
样例输入
1 2样例输出
思路
将数字转化为二进制,对每一位进行考虑。
假如n=7
这个7个数的某一位上的情况为
1 0 0 1 0 1 0
计算前缀pre[i](当前点前的1的个数)
0 1 1 1 2 2 3 3(第一个0是什么都没有的情况)
奇偶性
0 1 1 1 0 0 1 1
对于Ai⊕Ai+1⊕⋯⊕Aj,如果区间i到j的1为奇则对答案有贡献
也就是说j的前缀pre[j]减去i-1的前缀pre[i-1]为奇数,也就是pre[j]减pre[i-1]的奇偶性为奇
即pre[j]和pre[i-1]的奇偶性不同,这一位为1的情况也就是((这n个数前缀为奇的数量)乘(这n个数前缀为偶的数量加1)) (加1是空的前缀,也为偶)#include
问题 H: Inversion
题目描述
现给你 1 到 n 的一个排列,并按照某种顺序依次删除 m 个元素。现请你求出在每次删除一个元素之前整个序列的逆序对总个数。输入
第二行包含 n 个数,代表初始序列
接下来的 m 行,每行一个整数表示第 i 次删除的数(保证在此之前未曾删除过)
1≤n≤1051≤m≤5×104输出
样例输入
1 5 3 4 2
5
1
4
2样例输出
2
2
1思路
这里介绍一下CDQ分治
对于每个元素(a,b),有多少个有序对(a0,b0)满足a0 < a且b0 < b
求逆序对其实就是一个二维偏序问题
二维偏序问题几何表现为在二维坐标上求一个矩形内的点数
每一个位置由两个元素表示,x表示坐标,y表示大小,求逆序对就是求有多少个a,b满足a.x
我们可以再加一维,时间维,变成三维偏序问题(给定N个有序三元组(a,b,c),求对于每个三元组(a,b,c),有多少个三元组(a0,b0,c0)满足a0 < a且b0 < b且c0 < c)。
二维偏序问题几何表现为在三维坐标上求一个长方体内的点数
每一个位置由三个元素表示,x表示坐标,y表示大小,t表示元素出现的时间
先删除的时间维度大,后删除的时间维度小
问题就转变成求有多少个a,b满足a.x
具体的还是看代码实现吧…#include