本人不才,第二次写题解
这道题只有七天,相当于七个点。
但是实际上只有m(这里m为数值为1的点)个点,有点就有边,两点之间的边权就是相差的天数(例如1 0 0 0 1)v[1]到v[2]就是5-1=4所以我们这样记录点 i 到前一个点 i-1 的距离

int sum=1,o=0,top=0;
        for(int i=1;i<=7;i++){
            cin>>o;
            if(!o)sum++;
            else v[++top]=sum,sum=1;
        }
        v[1]+=(sum-1)//最后的点到第一z个点的距离,形成环

"如图所示,1 1 1 1 1 1 1的时候"
图片说明
于是公式就出来了,这里如果天数是点的倍数,那只需要k/top圈*7天减去最小的一条边权加一
:ans=min(ans,1+k/top*7-v[i])
如果天数不是点数的倍数,那么就用满的圈数乘以7天加上剩余的边数+1(这里包括前面的加一都是加初始点的一天)
ans=min(1+(k/top)7+图片说明 ) ,ans)

*图片说明
点个赞吧,我不容易啊,我不会数学符号,有问题在评论区留言