概述
你的任务是用最少的操作次数把序列1,2,…,n中的所有数都变成0。
每次操作可从序列中选择一个或多个整数,
同时减去一个相同的正整数。比如,
1,2,3可以把2和3同时减小2,得到1,0,1。
[输入]
输入包含多组数据。每组仅一行,为正整数n(n≤109)。
输入结束标志为文件结束符(EOF)。
[输出]
对于每组数据,输出最少操作次数。
思路 :就是一串数据,完了一直同时减他们的最大公倍数,减到0为止,输出减的次数。
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while (scanner.hasNext()) {
//判断是否有数据输入
int x=scanner.nextInt();
int ans=1;
//1-0的时候还有一次,所以要给个固定1
while (x!=1) {
x/=2;
ans++;
}
System.out.println(ans);
}
}
下面这个调用方法不好理解……
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n, m = 0;
n = scanner.nextInt();
System.out.println(function(n, m));
}
public static int function(int n, int m) {
while (n != 0) {
if (n == 1)
return 0;
else if (n % 2 == 0)
return 1 + function(n / 2, m + 1);
int x = function(n + 1, m + 1);
int y = function(n - 1, m + 1);
if (x > y) return y + 1;
else
return x + 1;
}
return m;
}
小剧场:我欲穿花寻路,直入白云深处,浩气展霓虹。
最后
以上就是直率薯片为你收集整理的蓝桥 给定正整数n JAVA的全部内容,希望文章能够帮你解决蓝桥 给定正整数n JAVA所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复