Uva 11384 Help is needed for Dexter
给定一个1….n的正整数序列,每次操作可以从序列寻找出一个或多个正整数,然后同时减去一个相同的正整数。
通过画图可以发现只要把后一半都减去n/2就和前一半一样了,所以有递推式 f(n )=f(n/2) + 1
#include <cstdio> using namespace std; int f(int n) { return n == 1 ? 1 : f(n >> 1) + 1; } int main() { int n; while(~scanf("%d",&n)) { printf("%d\n",f(n)); } return 0; }