题面

题意:给你一个无限大的棋盘,一个象棋中的马,问你这个马,飞n步后,可能的位置有多少种?

题解:看到题,就想先打表试试,于是先写个暴力(枚举每个位置,是马就飞周围8个格子,注意不要在同个循环里把格子的标记涂成相同的数字)

然后打出来是9 41 109 205 325 473 649 853

对于这种增长不快的,我一般是先直接两项相减

得到 32 68  96  120 148 176 204

这时就看到,这个数列的增长越来越有趣? 后面都加的是?

于是对于n>=5,我们有 f[n]=f[n-1]+120+(n-5)*28 = f[n-1]+28*n-20

这种递推式很明显的 解法 f[n]  = f[n-1]+28*n-20

f[n-1]= f[n-2]+28*(n-1)-20

f[5]=f[4]+28*(5)-20

左右相加,再抵消.

f[n]=28*(n+n-1+...+5)-20*(n-5+1)=f[4]+28*(n+5)*(n-4)/2-20*(n-4)=(14*(n+5)-20)*(n-4)+205 = (14*n+50)*(n-4)+205

 #include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
int main()
{
int caseCnt;
scanf("%d",&caseCnt);
for(int t=;t<=caseCnt;++t) {
ll n;
scanf("%llu",&n);
ll ans;
if(n==) ans=;
else if(n==) ans=;
else if(n==) ans=;
else if(n==) ans=;
else if(n==) ans=;
else {
ans=(*n+)*(n-)+;
}
printf("Case #%d: %llu\n",t,ans);
}
return ;
}

最新文章

  1. iOS获取app图标和启动图片名字(AppIcon and LaunchImage&#39;s name)
  2. 编程语言吉祥物之Duke
  3. django自带加密模块的使用
  4. Knockout.js随手记(6)
  5. 总结消息队列RabbitMQ的基本用法
  6. error: C++ preprocessor &quot;/lib/cpp&quot; fails sanity check
  7. UNIX网络编程-recv、send、read、write之间的联系与区别
  8. 【LeetCode 173】Binary Search Tree Iterator
  9. 一、python基础笔记(输入输出、list、touple、dict、set)
  10. 父 shell,子 shell ,export 与 变量传递
  11. Ollydbg 中断方法浅探
  12. nyoj 2 括号配对问题
  13. MEF高级进阶
  14. ELK采集之nginx 之高德地图出城市IP分布图
  15. Linux+.NetCore+Nginx搭建集群
  16. 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据
  17. 【原创精品】程序员最强大的利器——电子笔记本的思考(1)(ver0.3)
  18. Oracle table names are case sensitive (normally all uppercase)
  19. .net core使用Ku.Core.Extensions.Layui实现layui表单渲染
  20. sql server DbHelperSQL类

热门文章

  1. 死磕itchat源码--config.py
  2. 【编程工具】Vim编辑器的使用
  3. iterm2 快捷键设置
  4. Windows下Jupyter notebook 修改默认打开(工作、保存)文件夹(路径)
  5. 【ZOJ 4070】Function and Function
  6. lucene_04_解析语法查询
  7. 淘宝的开源分布式文件系统TFS
  8. 0120Keeplived实现自动切换Mysql服务
  9. Project Euler18题 从上往下邻接和
  10. requireJS文件夹