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》题目分析相关推荐

  1. hihoCoder 第136周 优化延迟(二分答案+手写堆)

    题目1 : 优化延迟 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho编写了一个处理数据包的程序.程序的输入是一个包含N个数据包的序列.每个数据包根据其重要程度不同 ...

  2. 周4早上搜索引擎分析 - crmim.com| MSCRM开发者之家

    周4早上搜索引擎分析 - crmim.com| MSCRM开发者之家 2011-06-09 10:10 转载自 分享 最终编辑 net_flyfox 周4早上搜索引擎分析 MSCRM开发者之家⁄ 网络 ...

  3. Twitter的分布式自增ID算法Snowflake实现分析及其Java、Php和Python版

    在分布式系统中,需要生成全局UID的场合还是比较多的,twitter的snowflake解决了这种需求,实现也还是很简单的,除去配置信息,核心代码就是毫秒级时间41位+机器ID 10位+毫秒内序列12 ...

  4. 系统集成资质培训 - 挣值分析题目分析

    系统集成资质培训 - 挣值分析题目分析 作者:刘毅 lypmpok@163.com 转载请注明出处 "挣值分析"是系统集成项目管理工程师考试的重点和难点,并且考核的难度是越来越高, ...

  5. (牛客腾讯思维编程题)编码编码分组打印下标题目分析

    本题答案在这点击进入 假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa,aaaa, aaab, aaac, - ...

  6. 7-16 一元多项式求导 (20 分)(详解+题目分析)

    7-16 一元多项式求导 (20 分) 1:题目 设计函数求一元多项式的导数. 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: ...

  7. 【大数据竞赛】2022MathorCup大数据挑战赛 B题 北京移动用户体验影响因素研究 题目分析

    系列文章目录 第一章 [大数据竞赛]2022MathorCup大数据竞赛 B题 北京移动用户体验影响因素研究 题目分析 第二章[大数据竞赛]2022MathorCup大数据挑战赛 B题 北京移动用户体 ...

  8. 电子设计大赛-放大器类题目分析

    关注v-x-公-众-号:[嵌入式基地] 后-台-回-复:[电赛] 即可获资料 回复[编程]即可获取 包括有:C.C++.C#.JAVA.Python.JavaScript.PHP.数据库.微信小程序. ...

  9. 计算机二级使用多级符号对章名,计算机二级考试题目分析

    计算机二级考试题目分析 Word 2010高级应用综合操作题 打开素材库中的"典型试题4-1.docx"文件,按下面的操作要求进行操作,并把操作结果存盘. 1.操作要求 (1)对正 ...

  10. RSA--维纳攻击--代码和题目分析

    文章目录 维纳攻击原理: 维纳攻击脚本 [羊城杯 2020]RRRRRRRSA 1 题目描述: 题目分析: 收获与体会: 维纳攻击原理: 两位大佬讲得非常清楚(搬运工就是我):https://zhua ...

最新文章

  1. Python center 用法
  2. php美化输入框代码,两句代码让你的zblogphp文章字段输入框加上ue编辑器功能
  3. (解题报告)L1-032 Left-pad (20分)——15行代码AC
  4. [Head First Java] - Swing做一个简单的客户端
  5. Flutter图像绘制原理深入分析
  6. 理发店收银系统php,【毕业论文】基于php+mysql美发店收银系统设计与实现.doc
  7. 自然语言处理项目之新闻主题分类Python实现
  8. 【算法】剑指 Offer 45. 把数组排成最小的数 【重刷】
  9. python 全栈开发,Day81(博客系统个人主页,文章详情页)
  10. Matlab系列教程_数值计算_求和(积)_求累加(积)
  11. 云服务器惠普版_工作进度通报,笔记本开箱目录20200531版
  12. Jmeter使用教程(图文并茂)|实战干货
  13. 各种级数(调和、几何)总结
  14. Android进阶——性能优化之APP启动速度优化实战总结(三)
  15. 清除tomcat缓存HTML,清除Tomcat缓存
  16. 什么是学习能力?如何提高学习能力?
  17. 计算机学院职业规划大赛策划书,大学生职业生涯规划大赛策划书(策划书范文).doc...
  18. 2019年丰巢科技Java面试题
  19. 对搜索引擎不友好的网站具有怎样的特征?
  20. 北京大学软微第二学位可能被取消!高校第二学士学位将成历史!

热门文章

  1. 在“北上广深杭”做Java开发如何月薪达到2w,需要技术水平达到什么程度?
  2. jq mobile一些菜鸟,w3c教程没出现方法汇总,持续更新中
  3. SQL Server 2008 R2密钥序列号
  4. dotnet 读 WPF 源代码笔记 插入触摸设备的初始化获取设备信息
  5. python 提示框如何顶层显示_Python Tkinter Toplevel顶层窗口
  6. PDF如何去除水印,一招搞定
  7. 20岁白富美写了一本高数教材,震惊欧洲数学界------阿涅西的箕舌线
  8. MFC绘制旋转Bezier曲面
  9. 软件测试基础(七)测试规范的确定
  10. 杰奇小说模板为什么要做伪静态,做了伪静态的好处是什么