WA精光了
by 览遍千秋 @ 2020-01-10 19:52:48
@[expect](/user/28910) 很正确鸭,你再处理下细节
by yummy @ 2020-01-10 20:03:10
@[expect](/user/28910) ~~ca精光?~~
by xuShengzhe @ 2020-01-10 20:04:49
@[expect](/user/28910) ~~zwh说在外面出卖他的,头一号就是你~~
by xuShengzhe @ 2020-01-10 20:06:31
x=14。
按你的思路,应该是分成7+7,然后递归求解。7求出来应该是12,然后12x12=144。
实际上应该分出来3,3,3,3,2,答案是162。
证伪只需要一个反例。证毕。
讲道理吧。你不能保证分出来的结果一定能被分成两个x/2,还有跨两半的情况。
by 可爱的Flandre酱 @ 2020-01-10 20:08:49
我把Int换成long long了之后试了一下。的确是输出144的。
您的代码(加了点东西)
~~memery拼错了,应该是memory,不知道有意无意~~
```
#include <bits/stdc++.h>
using namespace std;
#define int long long
int memery[100000+100];
int dfs(int x){
if(x<=3){
int res;
if(x==2) res=2;
else if(x==3) res=3;
return res;
}
if(memery[x]!=0) return memery[x];
if(x&1) memery[x]=dfs(x/2)*dfs(x/2+1);
else memery[x]=dfs(x/2),memery[x]=memery[x]*memery[x];
return memery[x];
}
#undef int //long long
int main()
{
cout<<dfs(14)<<endl;
}
```
但我的标程(大号LightningUZ的代码)告诉我答案的确是162。
by 可爱的Flandre酱 @ 2020-01-10 20:17:22
你为什么不问问神奇的海螺呢?
by 可爱的Flandre酱 @ 2020-01-10 20:17:43
@[DaRk_MasTeR](/user/106248) Thanks
by 览遍千秋 @ 2020-01-10 20:29:12