HDU 1848[Fibonacci again and again] 题解
来源:互联网 发布:幽浮2知乎 编辑:程序博客网 时间:2024/06/10 23:11
由于今天考试一道题都没有AC,所以写这道题来增加自信。水博客,可以考虑不看。
(传送门)
题目大意
依旧是Nim游戏,不过取得石子个数要求是斐波那契数列中的数字
解题分析
就是纯SG函数裸题,SG函数可以预先求,然后后面O(1)判断就行了。反正只是水博客的。
#include<cstdio>#include<cstring>using namespace std;int x,y,z,f[1005],sg[1005];bool vs[1005];void _work(){ sg[0]=0; f[0]=f[1]=1; for (int i=2;f[i-1]<=1000;i++) f[i]=f[i-1]+f[i-2]; for (int i=1;i<=1000;i++){ memset(vs,0,sizeof(vs)); for (int j=1;f[j]<=i;j++) vs[sg[i-f[j]]]=true; for (int j=0;j<=1000;j++) if (!vs[j]) {sg[i]=j; break;} }}inline void readi(int &x){ x=0; char ch=getchar(); while ('0'>ch||ch>'9') ch=getchar(); while ('0'<=ch&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}}int main(){ freopen("fibonacci.in","r",stdin); freopen("fibonacci.out","w",stdout); _work(); readi(x); readi(y); readi(z); while (x!=0||y!=0||z!=0){ if (sg[x]^sg[y]^sg[z]) printf("Fibo\n"); else printf("Nacci\n"); readi(x); readi(y); readi(z); } return 0;}
Orz 今天考试考了高分的Matchperson
阅读全文
0 0
- HDU 1848[Fibonacci again and again] 题解
- HDU 1848 Fibonacci again and again
- hdu 1848Fibonacci again and again
- hdu 1848 Fibonacci again and again
- hdu 1848 Fibonacci again and again
- HDU 1848 Fibonacci again and again
- hdu-1848 Fibonacci again and again
- HDU 1848 Fibonacci again and again
- HDU-1848-Fibonacci again and again
- HDU 1848 -Fibonacci again and again 博弈论
- hdu 1848 Fibonacci again and again
- HDU 1848 Fibonacci again and again
- hdu 1848 Fibonacci again and again
- HDU 1848 Fibonacci again and again
- 【hdu 1848】Fibonacci again and again
- hdu 1848 Fibonacci again and again(SG)
- HDU 1848 Fibonacci again and again
- hdu---(1848)Fibonacci again and again
- HDD is Outdated Technology
- unity调用外部的exe
- Confusing Date Format
- idea将maven项目打包成war包的方式,以及使用war包
- 【STL】codeforces 818D Multicolored Cars
- HDU 1848[Fibonacci again and again] 题解
- HDU 3264 Open-air shopping malls
- C# 使用 itextsharp 对pdf文件进行分割的几种方法(1)——按页码拷贝分割
- 设计模式:单例模式-懒汉模型和饿汉模型
- JAVA标准异常
- Java选择排序算法
- iOS WebView加载url缓存问题
- bugku 你必须让他停下
- 【spark】spark之shuffle调优