CF1883C Raspberries
思路
最开始晃眼一看,感觉很难,仔细一读题,哦,原来 k∈[2,5] 啊。
首先如果 k 是质数,也就是 k 不等于 4 的情况,必须要有一个数是 k 的倍数,那么计算每个数需要的操作数,取最小即可。
如果 k 不是质数,也就是 k 等于 4 的情况,要么是一个数是 4 的倍数,要么有两个数是 2 的倍数,那么取最小即可。
AC code
#include<bits/stdc++.h> using namespace std; int T,n,m,a,ans; int main() { scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m),ans=m+2; if(m==4)//当时想复杂了,所以写得又臭又长 { ans=2; if(n==1) { scanf("%d",&a); printf("%d\n",(a%4==0)?0:(m-a%m)); } else { int num=4; for(int i=1;i<=n;++i) { scanf("%d",&a),ans-=(a%4==0)?2:(a%2==0)?1:0; if(a%4==3) num=1; if(a%4==2) num=min(num,2); } printf("%d\n",min(num,max(ans,0))); } continue; } for(int i=1;i<=n;++i) scanf("%d",&a),ans=min(ans,(a%m==0)?0:(m-a%m)); printf("%d\n",ans); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】