A

diverse words指的是每一个字母在单词中出现的次数不超过1的单词

题目要求你求出字典序比当前给定单词大的字典序最小单词

1.如果给定的单词长度小于26 就遍历一次在单词尾部加上字典序最小的一个字母

2.如果单词的长度等于26 当且仅当单词为 zyxwvutsrqponmlkjihgfedcba 时没有答案 我们从最后一个字母开始消除如果到一个字母有比他大的就替换掉

#include <bits/stdc++.h>
#define PI acos(-1.0)
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
#define inf 1e9
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que; get min
const double eps = 1.0e-10;
typedef pair<int, int> pairint;
typedef long long ll;
typedef unsigned long long ull;
//const int maxn = 3e5 + 10;
const int maxn = ;
const int turn[][] = {{, }, { -, }, {, }, {, -}};
//priority_queue<int, vector<int>, less<int>> que;
//next_permutation
int zimu[];
int sum = ;
map<char, int> mp;
int main()
{
string now;
cin >> now;
string ans = "";
for (int i = ; i < now.size(); i++)
{
zimu[now[i] - 'a']++;
}
if (now.size() < )
{
cout << now;
for (int i = ; i <= ; i++)
{
if (!zimu[i])
{
cout << (char)('a' + i);
return ;
}
}
}
for (int i = now.size() - ; i >= ; i--)
{
int cnt = now[i] - 'a';
for (int j = cnt + ; j <= ; j++)
{
if (!zimu[j])
{
for (int k = ; k < i; k++)
{
cout << now[k];
}
cout << (char)('a' + j);
return ;
}
}
zimu[now[i] - 'a']--;
}
cout << - << endl;
}

B

要求你构造一个序列 序列总和与每一项的GCD不等于1   但总GCD为1   所有数不能超过300000

题目案例有提示 但是还是要你自己推 最后满足要求的只能是2,3两个数  2,3的LCM为6所以我们的序列总和一定要是6的倍数

我们把2的倍数三个为一组 这样就是6的倍数 3的倍数两个为一组 这样也是6的倍数

第一种情况:当N%3==0 即取2的倍数三个为一组可以全部取完的时候 去掉两组给3的倍数 这样才使总GCD为1

第二种情况:当N%3不为0  为2的时候 我们直接取一组3的倍数即可满足条件 为1的时候全部取3的倍数的话总和为6*N+3 我们需要消去这个3 需要再加一个3的倍数 又因为3的倍数是6*M+3 所以我们需要消去2的倍数里面的一个6的倍数

#include <bits/stdc++.h>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long ll;
int main()
{
int n;
cin >> n;
if (n == )
{
cout << "2 5 63" << endl;
return ;
}
if (n == )
{
cout << "2 4 6 12 3 9" << endl;
return ;
}
int two = n / ;
if (two > )
{
two = ;
}
else
{
if (n % == )
{
two -= ;
}
}
int number2 = two * - ((n - two * ) % == );
int number3 = n - number2;
for (int i = ; i <= number2; i++)
{
cout << * i << " ";
}
for (int i = ; i <= number3; i++)
{
cout << ( * i - ) * << " ";
}
cout << endl;
}

最新文章

  1. 用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树
  2. Thinking in java学习笔记之持有对象总结
  3. BZOJ 2654 &amp; 玄学二分+MST
  4. SSIS 包单元测试检查列表
  5. Java集合类: Set、List、Map、Queue使用场景梳理
  6. 队列——解密QQ号
  7. C++ 常用术语(后续补充)
  8. [转]ANDROID L——Material Design详解(动画篇)
  9. python eval
  10. 通过代理访问nginx和直接访问nginx区别
  11. Java代码输出是“father”还是“child”(一)
  12. 关键字-this
  13. python正则表达式--特殊字符
  14. C++的 new 和 detele
  15. EF6增改删等常用基类
  16. Spring Cloud(Dalston.SR5)--Eureka 注册中心高可用搭建
  17. MultiImageSelector 仿微信选择多张图片回调
  18. openshift harp.js heroku react-router 4
  19. python中range()、list()函数的用法
  20. 关于JSON基础的总结

热门文章

  1. TiDB单机安装测试
  2. python 3 爬虫
  3. EDM概念之A/B分类测试法
  4. flask环境布署--废弃不用,只留作备份
  5. vue的组件通讯 父传子 -- 子传父-- 兄弟组件的传值 vue的组件传值
  6. 二:flask-debug模式详解
  7. 中国MOOC_面向对象程序设计——Java语言_第1周 类与对象_1分数
  8. AndroChef Java Decompile
  9. node-webkit-updater——NW.js自动更新
  10. 阿里云 centos 部署 Django 可能遇到的问题