题目 题意:给定n个数 a a a,可以执行任意次操作,每次操作,选取数 x > = 2 x>=2 x>=2,并将所有数 a i a_i ai都对这个数取模,即 a i = a i % x a_i=a_i\%x ai=ai%x,问最后能否让这n个数都相同。
思路:考虑这n个数没有1的情况。那么我们只要将数组中所有非0元素,都取模一遍。由于 a i % a i = 0 a_i\%a_i=0 ai%ai=0,最后所有数都为0,即可满足题意。 考虑存在1的情况,那么最终只能使所有数都等于1。如果存在相邻元素,即差值为1的两个元素 a i , a j a_i,a_j ai,aj,那么此时,对这两个元素执行任意次取模操作,都不可能让它们同时都为1,因为它们的奇偶性会一直保持不同。而如果不存在相邻元素,那么对于所有大于1的元素 a i a_i ai,我们只需执行 a i a_i%(a_i-1) ai,即可让所有元素都变为1。
#include
using namespace std;
#define ll long long
const int maxn = 200010;
int n, k;
int a[maxn];
void solve() {
scanf("%d", &n);
int x;
bool flag1 = 0;
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?