http://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1341
题意:
给你一个数A,B,一次操作可以使A变成A-A%X(1<=X<A),要求最少的操作次数使A<=B.
找规律我们要求A%X的值最大。
A%2==0时 A%X的最大值为A/2-1;否则为A/2;
AC代码:
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
int t,cnt,ans=1;
long long a,b;
scanf("%d",&t);
while(t--){
cnt=0;
scanf("%lld%lld",&a,&b);
while(a>b){
if(a%2==0) a=a-(a/2-1);
else a=a-a/2;
cnt++;
}
printf("Case %d: %d\n",ans++,cnt);
}
return 0;
}