题意思路这里都写的很清楚→ →http://hi.baidu.com/chenwenwen0210/item/b4f142d53129fdc954347f11
我觉得这题真是太厉害了 作为一个程序员 严谨 认真 记忆力好 实在是太重要了 比起算法 不粗心大意显然更重要啊!
而这一题极大的考验了我们的耐心 细心。。bug王真心给跪了。。。
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
int tmp,k,m,n,ans,t,res,tmpres;
scanf("%d",&t);
while(t--)
{
ans=0;
scanf("%d%d%d",&n,&m,&k);
if(n==1)
{
printf("-1\n");
continue;
}
if(k==1)
{
if(m%n==0)
printf("-1\n");
else printf("%d\n",m);
continue;
}
if(n==2)
{
if(m%n==0) printf("-1\n");
else
{
if(k%2==0) k--;
ans=m/k;
res=m%k;
if(res>0)
{
ans++;
if(res%2==0)ans++;
}
printf("%d\n",ans);
}
continue;
}
if(k%n==0) k--;
res=m%k;
ans+=m/k;
if(res==0)
{
if(ans%n==0) ans++;
printf("%d\n",ans);
continue;
}
else//res>0
{
ans++;
if(ans%n==0) ans++;
else
{
if(res%n==0)
{
if(ans==1) ans++;
else if((k-1)%n==0)
{
bool flag=false;
for(int i=1;i<n&&i+res<=k&&i<k;i++)
{
if((res+i)%n!=0&&(k-i)%n!=0)
{
flag=true;
break;
}
}
if(!flag)
{
ans++;
if(ans%n==0) ans++;
}
}
}
}
printf("%d\n",ans);
}
}
return 0;
}