开始以为是数论题,求 x*k=(2y+1)*n 时的最小x值。然后WA了。后来发现,每个硬币翻面次数可以不同,比如样例:7 3
做法参造曾加老师的解法:https://www.zhihu.com/question/26570175/answer/33312310
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,k,ans;
while(~scanf("%lld%lld",&n,&k))
{
if(n&1)
{
if(!(k&1))
ans=-1;
else
{
ans=n%k?n/k+1:n/k;
ans=ans&1?ans:ans+1;
}
}
else
{
if(k&1)
{
if(n<(k<<1))
{
ans=n%(n-k)?n/(n-k)+1:n/(n-k);
ans=ans&1?ans+1:ans;
}
else
{
ans=n%k?n/k+1:n/k;
ans=ans&1?ans+1:ans;
}
}
else
{
if(n<(k<<1))
ans=3;
else
ans=n%k?n/k+1:n/k;
}
}
printf("%lld\n",ans);
}
}