首页 > 其他分享 >顺序取模_cf929_D. Turtle Tenacity: Continual Mods

顺序取模_cf929_D. Turtle Tenacity: Continual Mods

时间:2024-03-02 13:22:43浏览次数:31  
标签:Turtle 取模 Mods const gcd minA 最小值 define

目录

题目概述

原题参考:D. Turtle Tenacity: Continual Mods
给出长度为n的数组,可以对其任意排列,问是否可以给出一个数组a1、a2...、an满足a1%a2%...%an!= 0

思路想法

感觉这种与顺序无关的题目都可以先尝试升序或是降序排列,事实上,假如升序排列,如果最小值a1只有一个的话,那么最终答案就是a1,但是如果存在多个最小值该如何,此时应该选出一个除最小值之外的数,对最小值进行取模运算,得出一个更小的数,答案就是这个数,当然,当其余数对最小值取模得出的结果都是0时,那么就没有答案,对于这个,可以记录数组的gcd,只要最小值不是gcd就可以

参考代码

#include <bits/stdc++.h>
using namespace std;
#define FAST_IO ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
#define endl '\n'
#define pll pair<long long, long long>
#define pii pair<int, int>
#define vi vector<int>
#define vl vector<long long>
#define ll long long
#define ull unsigned long long
const ll INF = 9187201950435737471;
const int inf = 2139062143;
const ll mod = 1e9 + 7;
const double eps = 1e-6;
const double PI = acos(-1.0);
const int N = 2e5+7;
int n, a[N], minA, _gcd = 0;
map<int, int> cnt;
void solve() {
    cin >> n;
    cnt.clear(), _gcd = 0;
    minA = 1e9+7;
    for(int i=1; i<=n; i++) {
        cin >> a[i];
        cnt[a[i]] ++;
        minA = min(minA, a[i]);
        _gcd = gcd(_gcd, a[i]);
    }
    if(cnt[minA] == 1) cout << "YES" << endl;
    else {
        if(minA == _gcd) cout << "NO" << endl;
        else {
            if(cnt[minA] != n) cout << "YES" << endl;
            else cout << "NO" << endl;
        }
    }
}
int main() {
#ifdef xrl
    freopen("in.txt", "r", stdin), freopen("out.txt", "w", stdout);
#endif
    FAST_IO;
    int t = 1;
    cin >> t;
    while(t --) solve();
#ifdef xrl
    cout << "Time used = " << (double)(clock() * 1.0 / CLOCKS_PER_SEC) << "s";
#endif
    return 0;
}

做题反思

对于与顺序无关的题目,往往可以先尝试升序或是降序排列。同时,对于大多数题目,都可以先考虑简单情况再由复杂情况入手

标签:Turtle,取模,Mods,const,gcd,minA,最小值,define
From: https://www.cnblogs.com/notalking569/p/18048539

相关文章

  • turtle绘制太极图
    代码演示importturtle#导入turtle库t=turtle.Pen()#turtle.circle(radius,extent,step)#radius是必需的,表示半径,正值时逆时针旋转;#extent表示度数,用于绘制圆弧,正值时向上,负值时向下;#step表示边数,可用于绘制正多边形;#extent和step参数可有可无。#......
  • D. Turtle Tenacity: Continual Mods
    原题链接题解将序列排序后,设最小值为k,那么\(2~n\)的每个元素都可以表示为\(nk+b,b\in[0,k-1]\)如果\(2~n\)的元素中存在\(k\)且\(b\)均为零,一定失败code#include<bits/stdc++.h>usingnamespacestd;inta[100005]={0};intmain(){intt;cin>>t;......
  • C. Turtle Fingers: Count the Values of k
    原题链接题解暴力可不可以关键看时间复杂度x从1遍历到log2(1e6),y同理时间复杂度约为\(O(20·20)\)草code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;intmain(){llt;cin>>t;while(t--){lla,b,l;cin......
  • Modscan32 软件最全使用详解
    软件使用手动连接点击菜单栏”连接设置(Connection)“->”连接(Connect)“,弹出连接配置窗口。在”使用的连接”那里选择:RemotemodbusTCPServer RemoteTELNETServerDirectConnectiontoCOM1DirectConnectiontoCOM2…DirectConnectiontoCOM32备注:”Direct......
  • [Some Tricks] 自动取模类
    consti128o=1;template<i64mod,i64invpow=mod-2>structModular{u64M=(o<<64)/mod;i64query(i64x){u64x_=1ull*x;u64q=1ull*(((i128)(M)*(i128)(x_))>>64);u64r=x_-q*(1ull*mod......
  • P8807 [蓝桥杯 2022 国 C] 取模
    原题链接题解,我觉得讲的足够好了code#include<bits/stdc++.h>usingnamespacestd;intmain(){intt;cin>>t;while(t--){intn,m,i;cin>>n>>m;for(i=2;i<=m;i++){if(n%i!=i-1)......
  • python turtle库的初步认识
    pythonturtle库的初步认识一、设置主窗体的大小与位置.....turtle.setup(宽,高,与屏幕左侧的像素距离,与屏幕右侧的像素距离) #后两个数值为None时,该方向则默认居中二、画笔控制......turtle.penup() #抬起画笔,表示移动画笔不绘制形状turtle.pendown() #落下画笔,表示移......
  • 取模运算
    一、模运算的定义对于\(\forall~a\in\mathbb{R},~m\in(0,+\infty)\),求\(a\)除以\(m\)的余数的运算,就是取模运算,记作\(a~mod~m\)。规定\(0\leqa~mod~m\leqm-1\)。若\(a\)为负数,则\(a~\%~m\)可能小于\(0\)。此时,对结果进行\(a~\%~m+m\),使取模运算满足规定......
  • python turtle 递归绘制树
    运行效果代码importturtleastimportrandomasrc=["pink","green","lightgreen","orange","red","purple"]defdrawStar(l):t.begin_fill()foriinrange(5):t.forward(l)......
  • modset.c
    / DRM双缓冲垂直同步模式设置方法 这个例子扩展了modeset-double-buffered.c,并引入了与垂直空格(vsync'ed)同步的页面翻转。垂直空白是显示控制器从扫描帧缓冲区中暂停的时间。垂直空白结束后,将逐行再次扫描framebuffer,并在后面跟着垂直空白。 在更改framebuffer时,垂直空格是......