首页 > 其他分享 >4.5Codeforces Round 905 (Div. 3)

4.5Codeforces Round 905 (Div. 3)

时间:2024-04-05 18:14:02浏览次数:31  
标签:4.5 905 int cin long x% ans Div 整除

  1. C题
    题意:几个数字,挑选其中几个进行+1.得到的数字的乘积可以整除k
    注意题目条件:
    k只能是2,3,4,5这几种情况
    每个数字只能是1——10(不算大)(好像没啥用,因为可以自增超过10)
    思路:
    对于2,3,5要想整除,这些个数里必须要有一个数是可以整除2,3,5的。所以思路很简单,去造,找到一个“变成5的倍数”所需+1最少的就行
    对于4,分为几种情况:
    1、原数组有两个偶数,那一定可以整除4,
    2、原数组只有一个偶数,那就是输出1,找个奇数+1,一次操作即可
    3、原数组没有偶数,全是奇数,那么就必须和2,3,5一样手动造4了,找到一个“变成4的倍数”所需+1最少的就行,但是要特判1,1
#include<bits/stdc++.h>
using namespace std;
#define int long long
using i64 = long long;



signed main()
{
    ios::sync_with_stdio(false);cin.tie(nullptr);
    int t = 1; cin >> t;
    while(t--) 
    {
    	int x,n,k;cin>>n>>k;
    	int red=0;
    	int ans=1e18;
		for(int i=0;i<n;i++)//输入数据
		{
			cin>>x;
			if(x%k==0)
			ans=0;
			ans=min(ans,(k-x%k));//手动造数
				
			if(x%2==0)//计算奇偶数量,对4的情况而做的
			red++;
		} 
		
		 if(ans==0)//如果整除了,直接输出0即可
		 {
		 	cout<<ans<<endl;
		 	continue;
		 }
		 
		 if(k==4)
		 {
		 	if(red==0)//没有偶数
		 	{//下面是对1,1的特判
              //1,1 这是需要造3的,但是2就可以了
             //3,3这是需要造1的
             //所以,防止1,1的情况,如果出现了3,就给他改成2.   4这个模块下不可能有3,一定都能转换成2
		 		cout<<min((int)2,ans)<<endl;
			 }
			 else if(red==1)
			 {
			 	cout<<1<<endl;
			 }
			 else
			 {
			 	cout<<0<<endl;
			 }
		 }
		 else
		 {
		 	cout<<ans<<endl;
		 }
	}
    return 0;
}

标签:4.5,905,int,cin,long,x%,ans,Div,整除
From: https://www.cnblogs.com/yzzyang/p/18116020

相关文章

  • P9058 [Ynoi2004] rpmtdq 题解
    Description给定一棵有边权的无根树,需要回答一些询问。定义\(\texttt{dist(i,j)}\)代表树上点\(i\)和点\(j\)之间的距离。对于每一组询问,会给出\(l,r\),你需要输出\(\min(\texttt{dist(i,j)})\)其中\(l\leqi<j\leqr\)。\(n\leq2\times10^5\),\(q\leq10^6\),\(1\l......
  • Educational Codeforces Round 157 (Rated for Div. 2) —— C题
    EducationalCodeforcesRound157(RatedforDiv.2)C.TornLuckyTicket一道经典的前缀哈希题先看代码stra[N];voidmoon(){cin>>n;eps(i,1,n)cin>>a[i];//奇数+奇数偶数+偶数llres=0;map<pll,ll>p;map<ll,ll>pp;eps(i,1,n){res=0;for......
  • Codeforces Round 937 (Div. 4)
    CodeforcesRound937(Div.4)B题是输出规律图形题,对于这种题不能直接不思考就上去模拟,而应该思考一下数学规律,往往是模意义下的规律。本题只需要模4以后的结果分为两类,分别讨论即可。对于模4可以利用位运算取出第二位的,这与模2同理。chars1='#';chars2='.';voidsolve(){......
  • Codeforces Round 937 (Div. 4) D题(无脑做法)
    D.ProductofBinaryDecimals题目:提示:首先如果该数目都是1和0组成那肯定输出yes了,还有这个数如果是二进制的乘积也可以yes现在举个例子看看121=11x1114641=11x11x11x11显然也是yes,但是要如何做呢,下面介绍无脑做法。AC代码#include<bits/stdc++.h>usingnamespace......
  • Codeforces Round 901 (Div. 2) E
    链接有些部分和常规的题目有很大的区别,所以我理解的过程产生的很大很大的障碍。我看了4天吧,这题和题解。好烦。我的第一个思路就是暴力。因为很明显,其实对于每一个二进制位,a,b,m的情况数量是很有限的,就只有8种,而相应的,c,d的对应位是由这4种位运算得到的。我先尝试对每一种情况看......
  • EXE一机一码加密大师更新1.4.5,新增支持注销授权功能
    EXE一机一码打包加密大师是一款功能强大的工具,用于保护和加密EXE文件。它具有以下特性:一机一码授权:您可以为EXE文件添加一机一码认证,这意味着不同的电脑打开加密后的文件需要输入不同的激活码才能正常使用。这有助于保护您的文件安全,并方便向用户收费。静态密码:除了一机一码认证......
  • Codeforces Round 918 (Div. 4)
    CodeforcesRound918(Div.4)D:本题从实现上来说正难则反,应该倒着做在我正着做的时候,由于在访问后面元素的时候没有判边界,导致数组越界,出现奇怪字符在最后答案中。intn,m;inta[N];boolcheck(charc){ if(c=='a'||c=='e')returntrue; elsereturnfalse;}voidsolv......
  • 状压dp板子(cf div4 #937)
    #include<bits/stdc++.h>usingnamespacestd;intn;vector<int>v[20];stringa[20],b[20];booldp[500010][20];voiddfs(ints,intnow){dp[s][now]=true;for(autonxt:v[now]){if(s&(1<<nxt))continue;......
  • WolfInZooDivOne
    dp#预处理\(dp_{i,j}\)表示第\(i\)个选择,\(i\)前面的第一个为\(j\)的方案数预处理不合法的区间,暴力转移//Author:xiaruize#ifndefONLINE_JUDGEboolstart_of_memory_use;#endif#include<bits/stdc++.h>usingnamespacestd;#ifndefONLINE_JUDGEclock_tstar......
  • LeetCode 905. Sort Array By Parity
    原题链接在这里:https://leetcode.com/problems/sort-array-by-parity/description/题目:Givenanintegerarray nums,movealltheevenintegersatthebeginningofthearrayfollowedbyalltheoddintegers.Return anyarray thatsatisfiesthiscondition.Examp......