题目连接:https://www.hackerrank.com/contests/codestorm/challenges/game-with-a-boomerang

上一篇博客不知怎么复制过来题目,排版惨不忍睹。。。所以这个只好直接放链接吧

题意是n个土著人,编号1~n。围成一圈,然后从1号开始扔飞镖,如果是奇数个人的圈的话,那这个扔飞镖的人没有对应的人,扔飞镖的人淘汰。如果是偶数个人的圈的话,将对面编号淘汰。

这样围成一圈之后,进行n-1轮,每一轮淘汰掉一个人,问最终剩下的人的编号。

没做过这样的题,全无思路。然后上离散课的时候拿纸笔画,发现偶数n的时候就是等于奇数n-1的时候加一的情况,然后发现可以递推,奇数的时候也是有规律的。于是写了这么一个程序。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std; typedef long long ll;
//const int maxn = 1e18; ll n;
//ll val[1000000000000000000]; ll cal(ll x)
{
ll i;
ll ori = 1;
for (i = 2; i <= x; i++)
{
if (i & 1)
{
ori = ori + 1;
}
else
{
if (ori < i / 2)
{
ori = ori + 1;
}
else
{
ori = ori + 2;
if (ori > i)
{
ori = ori - i;
}
}
}
}
return ori;
} int main()
{
//freopen("i.txt","r",stdin);
//freopen("o.txt","w",stdout); int test;
scanf("%d", &test); while (test--)
{
scanf("%lld", &n);
printf("%lld\n", cal(n));
}
//system("pause");
return 0;
}

对了很多个test,但是tle了,我本来想也是会tle的。。。

于是举了1000个数找规律,找到的规律就是发现了断点都是4n-2,然后每个数只跟其断点的大小有关系,剩下的也没什么了。

做出来的时候特别高兴,但现在觉得这个题目貌似也不过如此啊。。。果然自己还是。。。。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std; typedef long long ll; ll n;
ll val[100]; void init()
{
ll i;
val[1] = 1;
for (i = 2;; i++)
{
val[i] = val[i - 1] * 4 - 2;
if (val[i] > 1e18)
break;
}
}
ll cal(ll x)
{
int i;
for (i = 1; i <= 32; i++)
{
if (x - val[i] < 0)
break;
}
i--; ll y = x - val[i];
ll sum;
ll v;
ll temp;
if (y < val[i])
return y + 1;
else
{
temp = x - 2 * val[i];
v = temp / 2;
sum = v + (v + 1) * 2;
if (temp & 1)
{
sum++;
}
return val[i] + sum;
}
}
int main()
{
//freopen("i.txt", "r", stdin);
//freopen("o.txt", "w", stdout); init();
int test;
scanf("%d", &test); while (test--)
{
scanf("%lld", &n);
printf("%lld\n", cal(n));
}
//system("pause");
return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Codestorm:Game with a Boomerang的更多相关文章

  1. Codestorm:Counting Triangles 查各种三角形的个数

    题目链接:https://www.hackerrank.com/contests/codestorm/challenges/ilia 这周六玩了一天的Codestorm,这个题目是真的很好玩,无奈只做 ...

  2. JavaScript面试的完美指南(开发者视角)

    为了说明 JS 面试的复杂性,首先,请尝试给出以下结果: onsole.log(2.0 == "2" == new Boolean(true) == "1") ...

  3. java web 开发三剑客 -------电子书

    Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知In ...

  4. 所有selenium相关的库

    通过爬虫 获取 官方文档库 如果想获取 相应的库 修改对应配置即可 代码如下 from urllib.parse import urljoin import requests from lxml im ...

  5. 转:Twitter.com在用哪些Javascript框架?

    原文来自于:http://blog.jobbole.com/63964/ 我一直在研究twitter.com使用的一些UI框架.下面是这些框架的清单(大部分是Javascript框架).如果你发现有些 ...

  6. 【leetcode】1037. Valid Boomerang

    题目如下: A boomerang is a set of 3 points that are all distinct and not in a straight line. Given a lis ...

  7. IDA PRO:庆祝成立创新 30 周年

    今天,IDA 已经三十岁了.为了纪念周年纪念,我们将描述史诗旅程的开始和主要里程碑. 背景 在 1990 年代初期,DOS 是最流行的 PC 操作系统,主要是 8086,偶尔有 80286(80386 ...

  8. 【LeetCode】1037. Valid Boomerang 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 中学数学题 日期 题目地址:https://leet ...

  9. In-Memory:内存数据库

    在逝去的2016后半年,由于项目需要支持数据的快速更新和多用户的高并发负载,我试水SQL Server 2016的In-Memory OLTP,创建内存数据库实现项目的负载需求,现在项目接近尾声,系统 ...

随机推荐

  1. Nginx Rewrite域名及资源重定向!(重点)

    第一步:搭建Nginx服务 第二步:修改主配置文件 [root@ns2 ~]# vim /usr/local/nginx/conf/nginx.conf user  nginx nginx; work ...

  2. windows破解wifi小技巧

    1,首先使用手机某软件破解wifi,手机连上破解的wifi 2,在手机上打开下面界面 3,在电脑上使用二维码识别小工具扫描二维码 4,得到扫面结果 4,得到扫描结果 WIFI:T:WPA;S:DFZJ ...

  3. java课后问题解答

    1.当有多个嵌套的try…catch…finally时,要特别注意finally的执行时机 答:当有多层嵌套的finally时,异常在不同的层次抛出 ,在不同的位 置抛出,可能会导致不同的finall ...

  4. 面试官:说说Spring中的事务传播行为

    前言 在开发中,相信大家都使用过Spring的事务管理功能.那么,你是否有了解过,Spring的事务传播行为呢? Spring中,有7种类型的事务传播行为.事务传播行为是Spring框架提供的一种事务 ...

  5. 数据库先系统与原理第三章笔记:数据库SQL查询语言

    SQL概述 SQL发展 SQL特点 SQL查询基本概念 单表查询 投影查询 1.查询指定列: SELECT 列名1,列名2,列名3,.....FROM Table_Name; #查询全部列:SELEC ...

  6. SSH项目Dao层和Service层及Action的重用

    泛型 1.泛型的定义 1.泛型是一种类型    1.关于Type            //是一个标示接口,该标示接口描述的意义是代表所有的类型        public interface Typ ...

  7. 14 JavaScript Window对象

    Window对象表示一个浏览器窗口或者一个框架. 在客户端JavaScript中,window对象是全局对象,所有的表达式都在当前的环境中计算. Window对象的子对象: JavaScript do ...

  8. 夯实Java基础(二十四)——Java8新特征之Optional类

    1.概述 对于Java程序员来说,到目前为止出现次数最多的应该是NullpointException,它是导致Java应用程序失败的最常见原因.之前处理空指针我们必须先通过条件先去判断,然后再确认是否 ...

  9. LeetCode 141. Linked List Cycle(判断链表是否有环)

    题意:判断链表是否有环. 分析:快慢指针. /** * Definition for singly-linked list. * struct ListNode { * int val; * List ...

  10. 八大排序算法C++代码实现

    八大排序算法 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序 ...