思路:题目要求输出要复制多少遍达到n 那么全部复制粘贴是不是最快的 所以一直除2就可以了 注意特殊情况
代码:
#include<cstdio>
#include<iostream>
using namespace std;
int k,cnt=0;;
int solve(int n)
{
int ans = 0;
int tmp = 0;
if(n==1) return 0;
if(n==2) return 1;
while(n)
{
if(n%2==0)
{
n /= 2;
ans++;
}
else
{
n-= 1;
tmp++;
n /= 2;
ans++;
}
}
if(tmp==1) return --ans; //若用ans++会返回没有减1的值,此处处理2的N次方
return ans;
}
int main()
{
while((scanf("%d",&k)==1)&&k>0)
{
cnt++;
cout<<"Case "<<cnt<<": "<<solve(k)<<endl;
}
return 0;
}