题目描述

链接:https://ac.nowcoder.com/acm/contest/11227/C
来源:牛客网

鸡尾酒的学生丹丹分不清求余和减法,因为他觉得两种运算都是将一个数字变小,所以都差不多。

为了让丹丹能够更好地理解求余和减法,鸡尾酒给了他这样一个问题:

给定 nn 个数字,每次有两种操作:

  1. 从所有正整数中任选一个数字 x(x >= 2)x(x>=2),并将所有数字全部对 xx 求余。
  2. 从这 nn 个数字中任选一些数字,使得它们全部减去一。

问最少进行多少次操作可以让所有数字全部变为 0。

这两种操作都需要“任选”,而丹丹有选择困难症,所以无法解决这一问题,你可以帮帮他吗?

题意

思路

  • 意识到操作次数不会大于两次,因为可以把所有的奇数减一变为偶数,然后把所有偶数mod 2。
  • 考虑小于2的情况:
  1. 全为0,不需要操作(因为没注意可以为0wa一次)
  2. 全为偶数,直接mod2
  3. 含奇数,全为1,直接全减一
  4. 含奇数,但不全为1,必须操作两次
  5. 含奇数,但没有1最小值,检验每个数是否为最小数的倍数

code

#include<bits/stdc++.h>
#define DEBUG(x) #x<<":"<<(x)<<' '
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
// const int mod=1e9+7;
const int N=1e5+10;
vector<int> vec;void solv()
{int n,t,ans=0;int cntodd=0,cnteven=0,cnt1=0;cin>>n;int minn=0x3f3f3f3f;for(int i=1;i<=n;i++){cin>>t;if(t){vec.push_back(t);if(t&1)cntodd++;else cnteven++;if(t==1)cnt1++;minn=min(minn,t);}}n=vec.size();if(n==0)ans=0;else if(cnteven==n)ans=1;else{if(cnt1==n)ans=1;else if(minn==1)ans=2;else{ans=1;for(int i=0;i<n;i++){if(vec[i]%minn){ans=2;break;}}}}cout<<ans<<'\n';
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T=1;// cin>>T;while(T--){solv();}return 0;
}

注意与总结

  • 这里直接将所有0舍去,n中减去0的个数有助于简化后面的判断条件

知识补充

oj记录 牛客小I白月赛50 C减法与求余 (思维相关推荐

  1. oj记录 牛客 高校赛 C派蒙的奇妙冒险------石之海

    题目描述 链接:https://ac.nowcoder.com/acm/contest/33869/C 来源:牛客网 题意 思路 其实只需要判断有没有素数即可,因为最少的染色策略是让所有的素数的颜色相 ...

  2. oj记录 牛客 高校赛 派蒙大小姐想让你告白

    题目描述 题意 思路 检查子串 code #include<bits/stdc++.h> #define DEBUG(x) #x<<":"<<( ...

  3. 牛客小d和孤独的区间

    牛客小d和孤独的区间 这道题我们如果等到数据都输入完后再计算会浪费很多时间 所以还是每次输入都计算一遍 我们知道要找到一个区间里只有一个1,其余都是0 所以这时候我们可以将输入分为两种情况 1,输入为 ...

  4. 算法记录 牛客网 leetcode刷题记录

    算法记录 & 牛客网 & leetcode刷题记录 解题思路 STL容器 常用算法模板 堆排序 插入排序 快速排序 BFS层序遍历 二叉树 JZ55 二叉树的深度 BST(binary ...

  5. 刷题记录:牛客NC15029吐泡泡

    传送门:牛客 小鱼儿吐泡泡,嘟嘟嘟冒出来.小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o". 两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉. (是的 ...

  6. E Groundhog Chasing Death(2020牛客暑期多校训练营(第九场))(思维+费马小定理+质因子分解)

    E Groundhog Chasing Death(2020牛客暑期多校训练营(第九场))(思维+费马小定理+质因子分解) 链接:https://ac.nowcoder.com/acm/contest ...

  7. 刷题记录:牛客NC22164更相减损术

    传送门:牛客 题目描述: 利用更相减损术求两个整数的最大公约数,即每次将较大的数变成大数减去小数的值 输入: 4 6 输出: 2 这道题的题目就表明了用更相减损术来求这道题的gcd值(即最小公约数), ...

  8. 牛客小bai月赛39 F 孤独(dp)

    牛客小白月赛39 F 孤独 #include <bits/stdc++.h> using namespace std; typedef long long ll; int ans = IN ...

  9. 刷题记录:牛客NC15162小H的询问

    传送门:牛客 题目描述: 小H给你一个数组{a},要求支持以下两种操作: 1. 0 l r(1<=l<=r<=n),询问区间[l,r]中权值和最大的有效子区间的权值和,一个子区间被认 ...

最新文章

  1. OpenLDAP、什么是目录服务、OpenLDAP简介、LDAP的基本模型、目录树概念、(DC、UID、OU、CN、SN、DN、RDN、c、o)、LDAP的使用
  2. 【计组实验】P2 Modelsim Verilog单周期处理器开发 MIPS指令集
  3. 【Ubuntu16.04-opencv3.4.0-FDDB Evaluation】评测代码使用中遇到对‘cvxxx’未定义的引用问题
  4. 老司机教你分析日志:分析用户的地理位置信息
  5. windowsXP/7下消除快捷键箭头的方法
  6. 为什么大部分的程序员成不了架构师?为什么?
  7. 安装apk出现Parse error when parsing manifest. Discontinuing installation.解决方案
  8. 定时器0练习,利用左循环函数_crol_(a,b)
  9. 行动是最好的告白,钟意社科院杜兰金融管理硕士项目的你不要错过机会
  10. 冻结pexcel 代码 -- 这次看看能坚持多久
  11. 华为高端机mate20遇到了冲击高端手机市场的好时机
  12. Excel的题库转换为word的题库
  13. python列表两两相减_【数据分析入门】之:如何用Python代替Excel(1)
  14. 【USB接口程序设计】
  15. 计算机房摆放布局,【机房】强弱电机房位置大小及布置(附案例)
  16. #include<>和#include“ “
  17. 线程同步与线程同步的必要性
  18. 如何给App快速搭建虚拟服务器
  19. backtrack回溯算法
  20. java 虚拟机字节码指令表

热门文章

  1. 博弈——悼念512汶川大地震遇难同胞——选拔志愿者(巴什博弈)
  2. SkyNet:字节跳动泛客诉问题挖掘与风险监控中台实践
  3. 用python搭建微商城_GitHub - pythonsir/wx-mobile-app: 基于 React.js 的微商城
  4. 操盘手的选股技巧,使用海龟交易法则应对证券牛市市场
  5. SEC成立新机构聚焦数字货币细分领域,提供ICO监管新思路
  6. 实现财务自由 之 打新股(申购新股),A 股怎么打新,打新的注意事项
  7. 易经之潜龙见龙惕龙 No.206
  8. ServiceNow - 删除更新集合(Delete UpdateSet)
  9. 微信小程序布局篇课程构思----Position+Flex
  10. 树莓派4B:安装QT5开发环境