欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

C RaspberriesCodeforces Round 905 Div 3

墨初 知识笔记 88阅读
C. Raspberries

输入n个数最少给这些数加几次可以让所以数乘积被k整除
题目中给出k的范围2<k<5,情况很少分类讨论。
分析只有当k4的时候存在给两个数都1的情况其他k都只可以给一个数一直1直到这个数可以mod k0;
当k4时单独考虑:
1.出现a[i]%k1的数大于等于2答案可以ansmin(ans,2)
2.出现a[i]%k2的数大于等于2答案可以ans0
3.出现(a[i]%k1的数量)>1&&(a[i]%k2的数量)>1答案可以ansmin((int)1,ans)

#include<iostream>#include<algorithm>#include<vector>#define int long longusing namespace std;const int INF0x3f3f3f3f;signed main(){    int T;cin>>T;    while(T--)    {        int n,k;cin>>n>>k;        int a[n2];        int ansINF;        int cal1;        for(int i1;i<n;i)//选取一个数加到可以整除k        {            cin>>a[i];cal*a[i];            if(a[i]%k0){                ans0;            }            int ta[i]/k1;            ansmin(ans,t*k-a[i]);        }        if(k4)        {            int cnt10,cnt20;            for(int i1;i<n;i)            {                switch (a[i]%4)                {                case 1:                    cnt1;                    break;                case 2:                    cnt2;                    break;                case 3:                    break;                default:                    ans0;                    break;                }            }            if(cnt1>2) ansmin((int)2,ans);            if(cnt2>2) ans0;            if(cnt1>1&&cnt2>1) ansmin((int)1,ans);        }        cout<<ans<<endl;    }}

标签:
声明:无特别说明,转载请标明本文来源!