题目大意:给定一个十进制的01串,使得他对10^x取模后结果等于10^y.
思路直接枚举后x位数字,当前仅当倒数第y+1个位置数字为1,其余位置为0时等式成立,从后往前依次遍历即可。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include
View Code 题目大意:给定n个问题,想问你最多能选取多少个问题并且满足 第k个问题数 a[k]>=k
思路:排序+贪心
从小到大遍历,若当前选取第x个数,若满足a[x]>=x,就选取当前的数,否则就跳过。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include
View Code 题目大意:给定一个长度为N的字符串,求最少删除多少个字符使得剩下的字符串满足(a[i]!=a[i+1])(i= 1,3,5,7....) 最后输出最少删除的字符个数,已经删除后的字符串。
思路:模拟
从第一个位置往后计算,若满足a[i]!=a[i+1],则将这两个字符添加到目标字符串中,否则删除第i个字符,再从第i+1个字符往后遍历。最后注意特判一下(若n-删除的字符数 = 奇数,则要加上原字符串的最后一个)
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include
View Code 题目大意:给定一个长度为n的整数序列a,求一个最小的数X,使得X的所有因子(1,X除外)都在a序列中。若能找到则输出这个数,若不能找到则输出-1
思路:排序+思维
若一个数除1和他本身外所有的因子都在a序列中,则这个数等于min(a)*max(a);
所以我们只需要将a序列排序,从两端往中间判断 每一次的a[l]*a[r]是否相等,若存在不相等则输出-1,若全相同,则判断这个数的所有因子数-2是否等于N,等于N则输出这个数,否则输出-1 (若n==1,只需要判断当前数是否为质数,若为质数则输出该数的平方,否则输出-1)
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include
View Code 题目大意:给定两个长度为n的序列a,b ,只能重新排列b数组的元素使得等式值最小。
思路:排序+贪心
有题意我们知道,a序列不能打乱顺序。对于a序列来说第i个位置的数再计算f(l,r)时,会被计算i*(n-i+1)次,所以我们将a序列的每一个位置都乘上 (i*(n-i+1)) ;
现在的问题转化为,重新排列a,b序列,使得他们对应位置乘积之和最小,结果对998244353取模,现在只需要用a的最小值乘上b的最大值,a的较小值乘上b的较大值..依次类推即可。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include
View Code