UVA - 11384 正整数序列(发现规律)
题意:
有一个1到n的序列,你一次从这个序列中取出几个数字,把他们减去同一个数,问最少做几次,全部变成0;
/*
如果每次我们给后面一般的数减去个n/2则问题就化简成了n/2的问题
例如 n=6时 将4,5,6,同时减去个3 则数据就变成了{1,2,3,1,2,3}此问题等价于n=3时的问题
这题真的很有启发性
*/
#include<cstdio>
#include<iostream>
using namespace std;
int fun(int n){
return n==1?1:fun(n/2)+1;
}
int main(){
int n;
while(~scanf("%d",&n)){
printf("%d\n",fun(n));
}
return 0;
}
还没有评论,来说两句吧...