题目连接: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. [原]NTP时钟同步服务设置

    服务器列表 192.168.0.2 ntp服务端 192.168.0.3 ntp客户端 192.168.0.4 ntp客户端 192.168.0.5 ntp客户端 注:以下操作均以root操作 一.N ...

  2. 修改Linux的默认编码

    Windows的默认编码为GBK,Linux的默认编码为UTF-8.在Windows下编辑的中文,在Linux下显示为乱码.为了解决此问题,修改Linux的默认编码为GBK.方法如下: 方法1: vi ...

  3. redhat7.6 crontab 服务,周期性任务

    系统默认安装开启 systemctl status crond.service 查看周期性任务(最多每隔1分钟做周期性任务) crontab   -l 系统自身的周期性任务 配置周期性任务 cront ...

  4. Python之字符(2)

    1.string.issupper()表示判断字符是否全部为小写字母. string1 = "abcdef" string2 = "ABCdef" string ...

  5. MRCP接口MRCPRecog 简介

    功能:开始一个语音识别,一边讲话,一边识别,需要ASR服务器. 原型:MRCPRecog (grammar, options) grammar ---- 语法文件,可以是一个xml文件 options ...

  6. 【原】nginx配置文件

    一:下载nginx方式 1.yum install nginx 2.源码安装 二:学习网址 nginx documentation — DevDocs 三:配置文件信息 server { listen ...

  7. Spark入门:第4节 Spark程序:1 - 9

    五. Spark角色介绍 Spark是基于内存计算的大数据并行计算框架.因为其基于内存计算,比Hadoop中MapReduce计算框架具有更高的实时性,同时保证了高效容错性和可伸缩性.从2009年诞生 ...

  8. [aac @ ...] Specified sample format s16 is invalid or not supported

    在使用FFmpeg打开编码器的时候出现以下错误: [aac @ 000001da19fd7200] Specified sample format s16 is invalid or not supp ...

  9. axios发送post请求[body-parser]--['Content-type': 'application/x-www-form-urlencoded']

    const express = require('express') const axios = require('axios') const bodyParser = require('body-p ...

  10. Django 学习之Xadmin

    一.xadmin的特点 1.基于Bootstrap3:Xadmin使用Bootstrap3.0框架精心打造.基于Bootstrap3,Xadmin天生就支持在多种屏幕上无缝浏览,并完全支持Bootst ...