请问京东这个题怎么算?

shiter
人工智能领域优质创作者
博客专家认证
2015-09-25 11:36:23
...全文
1389 37 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiter 2015-10-22
  • 打赏
  • 举报
回复
引用 32 楼 paschen 的回复:
[quote=引用 27 楼 injuer 的回复:] n S = ∫n^n - n + 1 1
其实结果就等于n^n - n + 1, n为熊的个数[/quote]
引用 33 楼 injuer 的回复:
[quote=引用 32 楼 paschen 的回复:] [quote=引用 27 楼 injuer 的回复:] n S = ∫n^n - n + 1 1
其实结果就等于n^n - n + 1, n为熊的个数[/quote] 呵呵.[/quote] http://www.zybang.com/question/76a5c90a23fcfa6f067546d945f5bd69.html 这咋化简的?求指导
youxi5d_s 2015-10-22
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int main()
{
	int N;
	cin >> N;

	int X = 1;
	while (++X) {
		int sum = X;
		int i = 1;
		for (; i <= N; i++) {
			int temp = (sum - 1) / N;
			if (temp * N + 1 == sum && temp > 0) {
				sum = sum - 1 - temp;
			}
			else
				break;
		}

		if (i == N + 1)
			break;
	}
	cout << X;

}
橘风之轮 2015-10-22
  • 打赏
  • 举报
回复
问题思路: 1.从最小来入手,可以首先假设最后一个熊拿到的苹果是1个,那么当时剩余的苹果就有n-1个 2.那么上一只熊分完之后苹果有sum=n个,分之前的苹果有sum/(n-1)*n+1个,同理上推 3.通过思路2可以得知sum必须可以整除n-1
#include <iostream>
using namespace std;

int fun(int n);
bool isDivide(int divided,int n);
int main()
{
	for(int i=2;i<9;i++)
	{
       int ret=fun(3);
	   printf("%d\n",ret);		
	}
	
}
bool isDivide(int divided,int n)
{
	if(0==divided%n)
		return true;
	return false;
}
int fun(int n)
{
	int nlef=n-1;
	int sum=nlef;
	for(int i=n;i>=1;i--)
	{
		if(!isDivide(sum,n-1))
		{
			nlef++;
			sum=nlef;
			i=n+1;
			continue;
		}
		sum=sum/(n-1)*n+1;
	}
	return sum;
}
injuer 2015-10-22
  • 打赏
  • 举报
回复
引用 34 楼 wangyaninglm 的回复:
[quote=引用 32 楼 paschen 的回复:] [quote=引用 27 楼 injuer 的回复:] n S = ∫n^n - n + 1 1
其实结果就等于n^n - n + 1, n为熊的个数[/quote]
引用 33 楼 injuer 的回复:
[quote=引用 32 楼 paschen 的回复:] [quote=引用 27 楼 injuer 的回复:] n S = ∫n^n - n + 1 1
其实结果就等于n^n - n + 1, n为熊的个数[/quote] 呵呵.[/quote] http://www.zybang.com/question/76a5c90a23fcfa6f067546d945f5bd69.html 这咋化简的?求指导[/quote] 使用泰勒级数和牛顿近似法简化,例如:x=e^e e=1 f(x) = ∑e^n/e*n+......... n=(1+1)*n ∞ x = ∫1/f(x) 1
paschen 版主 2015-10-21
  • 打赏
  • 举报
回复
引用 27 楼 injuer 的回复:
n S = ∫n^n - n + 1 1
其实结果就等于n^n - n + 1, n为熊的个数
paschen 版主 2015-10-21
  • 打赏
  • 举报
回复
引用 14 楼 bluewanderer 的回复:
其实我很想知道如果提交这么个东西上去又会怎么样... [code=c#include <stdio.h> int main() { switch (getchar() - '0') { case 2: puts("3"); break; case 3: puts("25"); break; case 4: puts("253"); break; case 5: puts("3121"); break; case 6: puts("46651"); break; case 7: puts("823537"); break; case 8: puts("16777209"); break; } }[/code]
这个牛
super_admi 2015-10-21
  • 打赏
  • 举报
回复
这个很显然是对的,因为你用的是查表法,最快的算法。
引用 14 楼 bluewanderer 的回复:
其实我很想知道如果提交这么个东西上去又会怎么样... [code=c#include <stdio.h> int main() { switch (getchar() - '0') { case 2: puts("3"); break; case 3: puts("25"); break; case 4: puts("253"); break; case 5: puts("3121"); break; case 6: puts("46651"); break; case 7: puts("823537"); break; case 8: puts("16777209"); break; } }[/code]
super_admi 2015-10-21
  • 打赏
  • 举报
回复
小东是一只猴子?话说,这题不是叫“猴子分水果”么?
injuer 2015-10-21
  • 打赏
  • 举报
回复

void apple(short bear, short apple_sum, short count){
	if(count == bear){
		return;
	}
	apple_sum += pow(count,count) - count + 1;
	count++;
	apple(bear, apple_sum, count);
}
injuer 2015-10-21
  • 打赏
  • 举报
回复
n S = ∫n^n - n + 1 1
injuer 2015-10-21
  • 打赏
  • 举报
回复
引用 32 楼 paschen 的回复:
[quote=引用 27 楼 injuer 的回复:] n S = ∫n^n - n + 1 1
其实结果就等于n^n - n + 1, n为熊的个数[/quote] 呵呵.
YUSHUIHE 2015-09-29
  • 打赏
  • 举报
回复
这道题恐怕会有很多解吧?
hhataa 2015-09-29
  • 打赏
  • 举报
回复
题目问最少多少苹果,如果n只熊分,最后一只熊只分一个苹果,这样这堆苹果就是满足题目条件的最小苹果堆。 算出n从2~8的所有上述苹果堆的数量,比较出7堆苹果的最小值,即为所求。 大神们,我这想法行不行啊。。。。
xupeihuagudulei 2015-09-29
  • 打赏
  • 举报
回复
图挂了。。。
xupeihuagudulei 2015-09-29
  • 打赏
  • 举报
回复
图挂了。。。
易可利浦斯 2015-09-29
  • 打赏
  • 举报
回复
public class Apple {
	public static void main(String[] args) {
		Apple apple = new Apple();
		Scanner s = new Scanner(System.in);  
        int n = s.nextInt(); 
        for (int sum = 2; sum < Integer.MAX_VALUE; sum++) {
        	if(apple.apples(sum,n)){
        		System.out.println(sum);
        		return;
        	}
		}
        
	}
	
	private boolean apples(int sum,int n){
		boolean b= true;
		int nn = 0;
		while(b){
			if (sum>0&&sum%n==1) {
				nn++;
				int y = sum/n;
				sum = sum-1-y;
			}else{
				b = false;
			}
		}
		if (nn==n) {
			return true;
		}else {
			return false;
		}
	}
}
lifeisshortyouneed 2015-09-28
  • 打赏
  • 举报
回复
仔细看了看 有点像猴子分桃,感觉这就是数学题目~。 按题意 最后一只熊应也是分的,设最后一只熊拿了M只(最少的整数)当是N=2时,最少总数是7只,最后一只熊最少拿了M=1只。 可以按第N只熊和第N—1的递归关系 推出 第一只熊即一开始的苹果数应该是: A= N^N(M+1) / ((N-1)^(N-1)) +1-N N=2 时 除式中N/(N-1)是能除尽的,M最少=1 A=7 N大于等于3时,M取最小的整数 ,只要M=((N-1)^(N-1)) -1 上面就能除尽了,同时A也最小A=N^N +1-N N=2, M=1,A=7 N=3,M=3,A=25 N=4,M=26, A=253 N=5,M=253,A=3121 ................
lifeisshortyouneed 2015-09-28
  • 打赏
  • 举报
回复
语文不好 最后一只熊 它 是直接拿余下的 还是 也分了 再拿 ?
bluewanderer 2015-09-28
  • 打赏
  • 举报
回复
引用 17 楼 micropentium6 的回复:
你这样会把OJ玩儿坏的! 面试官,你看我的:

#include <stdio.h>
#include <math.h>
size_t apple(size_t b)
{
    return b>0?pow(b,b)-(b-1):0;
}
int main()
{
    printf("%d\n",apple(8));
    return 0;
}

哦,我知道你下一个问题是:我的代码有啥问题。 我的答案是:木有考虑size_t溢出的问题。 全面吧! [quote=引用 14 楼 bluewanderer 的回复:] 其实我很想知道如果提交这么个东西上去又会怎么样... [code=c#include <stdio.h> int main() { switch (getchar() - '0') { case 2: puts("3"); break; case 3: puts("25"); break; case 4: puts("253"); break; case 5: puts("3121"); break; case 6: puts("46651"); break; case 7: puts("823537"); break; case 8: puts("16777209"); break; } }[/code]
[/quote] 哎呀,结果复杂度果然还是O(logN) 0_0||||
lkjasdf9909 2015-09-28
  • 打赏
  • 举报
回复
如果有9个熊,最后剩下8个苹果,怎么分成9份啊
加载更多回复(17)

65,182

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧