【hihoCoder】第77周《Koch Snowflake》题目分析
1、题目大意:
原题链接:http://hihocoder.com/contest/hiho77/problem/1
上图是著名的Koch雪花,或者叫Koch曲线。它是由一个等边三角形演变出来的。具体做法是——将每条边等分成三段,以中间一段为边长又形成一个等边三角形,再去掉中间那一段,就得到了上图所示的K1。然后无限重复这个过程。
Kn:第n次迭代生成的图形。(n=0,1,2,3….);
Nn:Kn 边的数目,为3∗4n3*4^n;
S(i,n) : Kn的第i条边(i=1,2,3…Nn);
给定S(i,n),求这条边是第几代产生的。如上图,S(1,0)是第0代产生的;S(2,1)是第1代产生的;S(4,1),也就是K1黄色那条边,是第0代产生的;S(9,2),K2蓝色的边,是第1代产生的。
输入:
第一个数字(T<=1000),表示测试案例个数,接下来有T行,每行两个数i(1<=i<=10910^9)和n(0<=n<=1000)。
输出:
T行,每行一个整数。
样例输入:
5
1 0
1 1
2 1
10 2
16 3
样例输出:
0
0
1
2
0
2、解题思路:
假设上图左边是第Kn-1的第i条边,经过一次变换得到Kn的4条边。由此得到两个个等式:
f(4(i-1)+1, n) = f(4(i-1)+4, n) = f(i,n-1)
f(4(i-1)+2, n) = f(4(i-1)+3, n) = n
代码如下:
int f(int i, int n){int x = i % 4;int y = ceil(i / 4);if (n == 0){return 0;}if (x == 2 || x == 3){return n;}else{return f(y, n-1);}
}
3、解题心得
类似这种题,一看应该是能找到数学规律的题目,可以巧解。但是在这之前我们应该先预先准备足够的测试用例,题目给的显然不够,我们可以自己先暴力多打印几组测试用例,就像下面的:
//-----------------------------------------------------
//All Rights Reserved, Copyright (C) 2015, beyourself
//-----------------------------------------------------
#include<iostream>
#include<cmath>
#include<vector>
using namespace std;int f(int j, int n){...}int main(){int i, j, k, n;vector<int> V[100];V[0].push_back(0);V[0].push_back(0);V[0].push_back(0);V[0].push_back(0);V[1].push_back(0);V[1].push_back(0);V[1].push_back(1);V[1].push_back(1);V[1].push_back(0);for (i = 2; i < 5; ++i){V[i].push_back(0);for (j = 1; j < V[i - 1].size(); ++j){for (k = 0; k < 4; ++k){if (k == 0 || k == 3){V[i].push_back(V[i - 1][j]);}else{V[i].push_back(i);}}//k}//j}//iint cas;cin >> cas;while (cas--){cin >> i >> n;int t = i % ((int)pow(4.0,n));if (t == 0){t = (int)pow(4.0, n);}if (V[n][t] == f(i, n)){cout << "\nRight!\n";}else{cout << "\nWrong!\n";}}//whilereturn 0;
}
这样,将正确结果存在容器V中,将函数f(i,n)的结果与正确答案比对,这样将n从0到4都充分测试一遍,再提交源代码,一次性AC的概率大大提高,不至于多次提交不过,白白罚时。
【hihoCoder】第77周《Koch Snowflake》题目分析相关推荐
- hihoCoder 第136周 优化延迟(二分答案+手写堆)
题目1 : 优化延迟 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho编写了一个处理数据包的程序.程序的输入是一个包含N个数据包的序列.每个数据包根据其重要程度不同 ...
- 周4早上搜索引擎分析 - crmim.com| MSCRM开发者之家
周4早上搜索引擎分析 - crmim.com| MSCRM开发者之家 2011-06-09 10:10 转载自 分享 最终编辑 net_flyfox 周4早上搜索引擎分析 MSCRM开发者之家⁄ 网络 ...
- Twitter的分布式自增ID算法Snowflake实现分析及其Java、Php和Python版
在分布式系统中,需要生成全局UID的场合还是比较多的,twitter的snowflake解决了这种需求,实现也还是很简单的,除去配置信息,核心代码就是毫秒级时间41位+机器ID 10位+毫秒内序列12 ...
- 系统集成资质培训 - 挣值分析题目分析
系统集成资质培训 - 挣值分析题目分析 作者:刘毅 lypmpok@163.com 转载请注明出处 "挣值分析"是系统集成项目管理工程师考试的重点和难点,并且考核的难度是越来越高, ...
- (牛客腾讯思维编程题)编码编码分组打印下标题目分析
本题答案在这点击进入 假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa,aaaa, aaab, aaac, - ...
- 7-16 一元多项式求导 (20 分)(详解+题目分析)
7-16 一元多项式求导 (20 分) 1:题目 设计函数求一元多项式的导数. 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: ...
- 【大数据竞赛】2022MathorCup大数据挑战赛 B题 北京移动用户体验影响因素研究 题目分析
系列文章目录 第一章 [大数据竞赛]2022MathorCup大数据竞赛 B题 北京移动用户体验影响因素研究 题目分析 第二章[大数据竞赛]2022MathorCup大数据挑战赛 B题 北京移动用户体 ...
- 电子设计大赛-放大器类题目分析
关注v-x-公-众-号:[嵌入式基地] 后-台-回-复:[电赛] 即可获资料 回复[编程]即可获取 包括有:C.C++.C#.JAVA.Python.JavaScript.PHP.数据库.微信小程序. ...
- 计算机二级使用多级符号对章名,计算机二级考试题目分析
计算机二级考试题目分析 Word 2010高级应用综合操作题 打开素材库中的"典型试题4-1.docx"文件,按下面的操作要求进行操作,并把操作结果存盘. 1.操作要求 (1)对正 ...
- RSA--维纳攻击--代码和题目分析
文章目录 维纳攻击原理: 维纳攻击脚本 [羊城杯 2020]RRRRRRRSA 1 题目描述: 题目分析: 收获与体会: 维纳攻击原理: 两位大佬讲得非常清楚(搬运工就是我):https://zhua ...
最新文章
- Python center 用法
- php美化输入框代码,两句代码让你的zblogphp文章字段输入框加上ue编辑器功能
- (解题报告)L1-032 Left-pad (20分)——15行代码AC
- [Head First Java] - Swing做一个简单的客户端
- Flutter图像绘制原理深入分析
- 理发店收银系统php,【毕业论文】基于php+mysql美发店收银系统设计与实现.doc
- 自然语言处理项目之新闻主题分类Python实现
- 【算法】剑指 Offer 45. 把数组排成最小的数 【重刷】
- python 全栈开发,Day81(博客系统个人主页,文章详情页)
- Matlab系列教程_数值计算_求和(积)_求累加(积)
- 云服务器惠普版_工作进度通报,笔记本开箱目录20200531版
- Jmeter使用教程(图文并茂)|实战干货
- 各种级数(调和、几何)总结
- Android进阶——性能优化之APP启动速度优化实战总结(三)
- 清除tomcat缓存HTML,清除Tomcat缓存
- 什么是学习能力?如何提高学习能力?
- 计算机学院职业规划大赛策划书,大学生职业生涯规划大赛策划书(策划书范文).doc...
- 2019年丰巢科技Java面试题
- 对搜索引擎不友好的网站具有怎样的特征?
- 北京大学软微第二学位可能被取消!高校第二学士学位将成历史!
热门文章
- 在“北上广深杭”做Java开发如何月薪达到2w,需要技术水平达到什么程度?
- jq mobile一些菜鸟,w3c教程没出现方法汇总,持续更新中
- SQL Server 2008 R2密钥序列号
- dotnet 读 WPF 源代码笔记 插入触摸设备的初始化获取设备信息
- python 提示框如何顶层显示_Python Tkinter Toplevel顶层窗口
- PDF如何去除水印,一招搞定
- 20岁白富美写了一本高数教材,震惊欧洲数学界------阿涅西的箕舌线
- MFC绘制旋转Bezier曲面
- 软件测试基础(七)测试规范的确定
- 杰奇小说模板为什么要做伪静态,做了伪静态的好处是什么