有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数。比如f(13)=6,
现在f(1)=1,问下一个最大的f(n)=n的n是什么?
public static int fn(int n) {
int k = 0;
for (int i = 0; i <= n; i++) {
String iStr = String.valueOf(i);
if (iStr.contains("1")) {
k += iStr.split("1").length;
}
}
// System.out.println("k:" + k);
return k;
} 1,出题人出完题,很多人都不明白什么意思。
2,然后出题人举例:比如f(199981)=199981,要求找出这个199981来。
3,有人验证199981正确
4,有人验证1111111110 正确
5,有人开始在1111111110 范围内找 结果最大的就是1111111110
6,大家一致认为最大的是1111111110
7,有人直接给变量赋值1111111110 ,算了一堆代码 结果1111111110
8,此人被人批驳 效率太慢
9,此人优化多次 说效率快多了
10,有人中途给出算效率的公式
11,有人批驳大家把问题高错了 应该是算时间的 都算错了
。。。。。
有几个灵性人 还知道无法证明n是最大的
跟贴依然在继续
posted on 2007-03-27 11:01
★yesjoy★ 阅读(291)
评论(0) 编辑 收藏 所属分类:
算法总结