Codeforces Round #747 (Div. 2) Editorial
时间:2021-10-09
本文章向大家介绍Codeforces Round #747 (Div. 2) Editorial,主要包括Codeforces Round #747 (Div. 2) Editorial使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Codeforces Round #747 (Div. 2) Editorial
A. Consecutive Sum Riddle
思路分析:
- 一开始想起了那个公式l + (l + 1) + … + (r − 1) + r = (l + r)(r - l + 1) / 2。
- 然后一看令l + r = 1最合适,那么就有l = r - 1,一代入就得到r = n, l = -n + 1。
- 没想通为什么没有一眼看出来。
代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
ll n;
cin >> n;
cout << -n + 1 << ' ' << n << endl;
}
return 0;
}
B. Special Numbers
思路分析
- 这题也是想久了,其实列一下规律一下就出来了(当然不排除大佬一眼看出来。
- 我们列一下前几项吧。
- k = 1,2,3,4,5,我们分别选的是n ^ 0,n ^ 1,n ^ 0 + n ^ 1,n ^ 2,n ^ 0 + n ^ 2。
- 然后我们就可以得出一个规律,那就是我们把k变成二进制,如果当前二进制位为1的话我们就加上n ^ x,x是指该二进制位是第几位,然后注意longlong 和 取模即可。
代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod = 1e9 + 7;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
while (t--)
{
ll n, k;
cin >> n >> k;
ll ans = 0;
ll p = 1;
for (int j = 0; j <= 31; j++)
{
if (k & (1 << j))
{
ans = (ans + p) % mod;
}
p *= n;
p %= mod;
}
cout << ans << endl;
}
return 0;
}
C. Make Them Equal
思路分析
- 这题也挺简单的,很容易想到最多需要两次操作,因为1 <= x <= n,所以我们只要选n - 1和n必然能完成任务,因为选n就把除n这个位置以外的位置全部弄好了,然后就是n-1必然不会被n整除。
- 所以我们就要思考一下只要一次操作和0次操作的情况。
- 看下题目要求的时间,试试暴力(乌鱼子,我还想是不是质因数分解然后拿最小的质因数和n比大小,不知道有同学这样试了没)。
- 暴力的时候注意一下o(n^2)是过不了这题的,所以我们以x为第一层循环,这样能优化时间。因为这样的话我们下标就不用一个一个遍历,只需要加上x即可。
代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
while (t--)
{
vector<int> ans;
bool ok = true;
int n;
cin >> n;
char ch;
cin >> ch;
string s;
cin >> s;
for (int i = 0; i < s.size(); i++)
{
if (s[i] != ch)
{
ok = false;
}
}
if (!ok)
{
for (int i = 1; i <= n; i++)
{
ok = true;
for (int j = i; j <= n; j++)
{
ok &= (s[j - 1] == ch);
j += i - 1;
}
if (ok)
{
ans.push_back(i);
break;
}
}
}
if (!ok)
{
ans.push_back(n);
ans.push_back(n - 1);
}
cout << ans.size() << endl;
for (int x : ans)
{
cout << x << ' ';
}
cout << endl;
}
return 0;
}
原文地址:https://www.cnblogs.com/csu-yuuki/p/15384823.html
- jquery 操作DOM元素(1)
- 开源的读取Excel文件组件-ExcelDataReader
- BlackPearl 的 ServiceObject 开发部署
- [程序设计语言]-[核心概念]-04:数据类型
- jquery 筛选元素(1)
- [程序设计语言]-00:目录
- 使用 SQL Server 2008 数据类型-xml 字段类型参数进行数据的批量选取或删除数据
- jquery 筛选元素 (2)
- 专家:中国还不是网络强国 今后须打破国外垄断
- jquery 筛选元素 (3)
- ASP.NET安全隐患的临时解决方法
- 实用代码-C#之IP地址和整数的互转
- jquery操作元素的位置
- 文档数据库系统CouchDB
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- LeetCode91|寻找重复数
- LeetCode90|两个数组的交集
- LeetCode89|在排序数组中查找数字I
- LeetCode88|两数之和IV-输入BST
- LeetCode98|判定字符是否唯一
- LeetCode97|合并两个有序链表
- LeetCode99|数组中出现次数超过一半的数字
- redis源码之hash结构的实现
- redis源码之set结构
- redis源码之zset结构的实现
- Elasticsearch: range 数据类型及基于range的聚合 (7.4发行版新功能)
- 漫画:如何在数组中找到和为 “特定值” 的三个数?
- 除了MySQL,大牛DBA还会啥?
- 用 Docker swarm 快速部署分布式图数据库 Nebula Graph 集群
- Labelhub 基于腾讯云 Serverless 技术为人工智能企业提供数据与模型解决方案