题目连接: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. Linux批量装机(PXE)!

    一 .PXE 简介PXE:Pre-boot Excution Environment,预启动执行环境PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户 ...

  2. redis requires Ruby version >= 2.2.2 系统默认 ruby 版本过低,导致 Redis 接口安装失败

    安装 Redis 接口时异常 ,系统 ruby 版本过低 ! 输入命令 " gem install redis " 出现 " ERROR:  Error installi ...

  3. 纪录片- 睡眠追踪(Chasing sleep) (共6集)

    传送门:https://www.bilibili.com/bangumi/play/ep120260/ 小贴士传送门:https://www.bilibili.com/video/av11887055 ...

  4. python多线程下载ts文件

    # -*- coding: utf-8 -*- """ Created on Wed Aug 22 15:56:19 2018 @author: Administrato ...

  5. 1.ORM介绍,基本配置及通过ORM框架创建表

    1.介绍 ORM全拼Object-Relation Mapping(对象-关系映射) 作用:主要实现模型对象到关系数据库数据的映射 通过ORM框架作为一个中间者或者是一个桥梁,开发者通过定义模型类,属 ...

  6. leetcode刷题-- 4. 贪心

    贪心 455分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼 ...

  7. 三 Spring和DI(面试)

      IOC:控制反转,将对象的创建权反转给了Spring DI:依赖注入,前提要有IOC的环境.Spring管理这个类的时候会将类的依赖的属性,在xml注入(设置)进来. 面向对象的时候,类和类之间的 ...

  8. @override编译报错

    今天突然遇到一个问题,明明我重写的接口的方法,编译的时候一直报@override is not override a method from superclass,查了一下资料,这个@override ...

  9. Android SDCard文件、目录操作【转】

    一.权限问题 参考:http://www.cnblogs.com/sky-zhang/p/3403393.html Android框架是基于Linux内核构建,所以Android安全系统也是基于Lin ...

  10. C语言for循环嵌套示例

    打印九九乘法表 #include <stdio.h> int main() {   int n,i,j; for (i=1;i<=9;i++) printf("%-4d&q ...