正整数序列 (Help is needed for Dexter, UVa 11384)

来源:互联网 发布:教师网络研修注册 编辑:程序博客网 时间:2024/05/16 14:30

给定正整数n,你的任务是用最少的操作次数把序列1, 2, 3 ... n 中的所有数都变为0。 每次操作可以从序列中选择一个或多个整数,同时减去一个相同的正整数。比如,1,2,3可以把2和3同时减小2,得到1,0,1.

【输入格式】

输入包含多组数据。每组仅一行,为正整数n(n <= 10^9)。输入结束标志为文件结束符(EOF)。

【输出格式】

对于每组数据,输出最少操作次数。


【题解】

每次减去(n/2+1)。这样剩下的一部分就是0~n/2范围内,就这样一直递归,

所递归的次数即为操作次数

【代码】

#include <cstdio>int f(int n){return n == 1 ? 1 : f(n/2)+1;}int main(){int n;while(scanf_s("%d", &n) == 1 )printf("%d\n", f(n));return 0;}


0 0
原创粉丝点击