upc组队赛1 过分的谜题【找规律】
过分的谜题
题目描述
2060年是云南中医学院的百年校庆,于是学生会的同学们搞了一个连续猜谜活动:共有10个谜题,现在告诉所有人第一个谜题,每个谜题的答案就是下一个谜题的线索....成功破解最后一个谜题后,答案就是指向奖励的线索
在所有同学们的努力下,全校同学们获得了最后一个谜题,这个谜题有几十张纸,上面全是密密麻麻的数字以及'.'
第一页内容如下:
1,2,3,4,5,6
4,1,5,2,6,3
2,4,6,1,3,5
1,2,3,4,5,6
———3
1,2,3,4....32
.............
.............
———10
有细心的同学发现,这是对一组1-2n的序列进行如下移动:每次将前n个数字取出,按顺序依次插入到位于n+1,n+2...2n的数字后面,最后的数字表示多少次移动后会变回原来的序列
第二页内容如下:
1,2,3,4....64
.............
.............
———?
1,2,3,4....140
.............
.............
———?
同学们发现,越往后翻,这个序列的长度就越长,前面十几二十个数字的序列同学们还可以一步一步模拟做出来,但是到后来几千甚至上万的长度,就没有办法计算了,甚至中间一步做错,就步步都错。
这个谜题真是太过分了!但是奖励就在眼前,只要计算出所有答案,所有答案就是指引同学们获得奖励的线索,那么现在问题来了,同学们除了发现上面的n=最后那个数字/2之外,没有办法给你任何帮助,而作为一个计算机科学与技术专业的大佬,你自然就成为了同学们心目中拯救他们的英雄,所以你能不能写一个程序,当你知道n是多少的时候,可以直接得出答案呢?
输入
多组测试数据.每组数据的第一行包含一个正整数n(1<= n<=10000).
输出
每组数据输出一行整数表示最少需要经过几次移动能变回原序列,若不能,则输出"-1"
样例输入
3
16
样例输出
3
10
题解
打表找规律 可以只看1,看他是怎么回到原来的位置的
很明显的规律就是 如果x小于n就 x乘2,如果大于n超过了循环位数,就x = (x - n) * 2 - 1;
代码
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for(int i=a;i<n;i++)
#define per(i,a,n) for(int i=n-1;i>=a;i--)
#define readc(x) scanf("%c",&x)
#define read(x) scanf("%d",&x)
#define read2(x,y) scanf("%d%d",&x,&y)
#define read3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define print(x) printf("%d\n",x)
int T;
int n,m;
int ans;
int main(){
  while(read(n) != EOF){
    int x = 1;
    ans = 0;
    while(x!=1 || !ans){
      ans++;
      if(x > n) {
        x = (x - n) * 2 - 1;
      }
      else
        x *= 2;
    }
    print(ans);
  }
}
upc组队赛1 过分的谜题【找规律】的更多相关文章
- hdu 3951 - Coin Game(找规律)
		这道题是有规律的博弈题目,,, 所以我们只需要找出规律来就ok了 牛人用sg函数暴力找规律,菜鸟手工模拟以求规律...[牢骚] if(m>=2) { if(n<=m) {first第一口就 ... 
- HDU 5703 Desert 水题 找规律
		已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ... 
- hdu4952 Number Transformation (找规律)
		2014多校 第八题 1008 2014 Multi-University Training Contest 8 4952 Number Transformation Number Transform ... 
- CF456B Fedya and Maths 找规律
		http://codeforces.com/contest/456/problem/B CF#260 div2 B Fedya and Maths Codeforces Round #260 B. F ... 
- hdu 4731 2013成都赛区网络赛 找规律
		题意:找字串中最长回文串的最小值的串 m=2的时候暴力打表找规律,打表可以用二进制枚举 
- 找规律 Codeforces Round #290 (Div. 2) A. Fox And Snake
		题目传送门 /* 水题 找规律输出 */ #include <cstdio> #include <iostream> #include <cstring> #inc ... 
- 找规律 ZOJ3498 Javabeans
		Javabeans are delicious. Javaman likes to eat javabeans very much. Javaman has n boxes of javabeans. ... 
- C基础之递归(思想很重要,学会找规律)
		递归思想的条件:1.函数自己调用自己 2.函数必须有一个固定的返回值(如果没有这个条件会发生死循环) ----规律很重要 简单递归题目一: 设计一个函数计算一个整数的n次方,比如2的3次方,就是8 步 ... 
- BZOJ-1228     E&D      博弈SG+找啊找啊找规律
		讨厌博弈,找规律找半天还是错的.... 1228: [SDOI2009]E&D Time Limit: 10 Sec Memory Limit: 162 MB Submit: 666 Solv ... 
随机推荐
- .NET 黑魔法 - asp.net core 身份认证 - Policy
			身份认证几乎是每个项目都要集成的功能,在面向接口(Microservice)的系统中,我们需要有跨平台,多终端支持等特性的认证机制,基于token的认证方式无疑是最好的方案.今天我们就来介绍下在.Ne ... 
- rabbitmq坑点与异常处理
			from:http://www.cnblogs.com/gossip/p/4573056.html 一.None of the specified endpoints were reachable 这 ... 
- java中二维数组的复制克隆
			https://blog.csdn.net/qq_37232304/article/details/79950022 
- django后台的制作
			参考:http://zengestudy.blog.51cto.com/1702365/1902660 http://www.cnblogs.com/fnng/p/3737964.html 实现与后台 ... 
- JTable的模型
			2018-11-04 23:15:21开始写 模型类 import javax.swing.table.DefaultTableModel;//导入包 public class LocalTableM ... 
- sql privot 实现行转列
			表结构如下: RefID HRMS Name InsuranceMoney InsuranceNamefb2bdee8-e4c9-4470-8e7f-14550d3212f7 ... 
- 获取 web 服务器 port
			Tomcat: public static String getServerPort(boolean secure) throws AttributeNotFoundException, Instan ... 
- 使用隐含参数testMappingSpeed排查GoldenGate抽取慢的步骤
			OGG经典抽取模式读取redo慢的检查步骤,可以采用以下几个步骤来排查. 步骤一,确认是否抽取进程的写入有问题 1. 在原有抽取进程上,执行如下命令,统计抽取进程的效率 GGSCI> stats ... 
- Java连接数据库 #02# JDBC经典套路
			内容索引 LocalConnectionFactory.java LocalConnectionProxy.java ProfileDAO.java-2.0 ProfileDAOImpl.java-2 ... 
- 获取其他线程的数据用 queue, 多进程Q
			获取其他线程的数据用 queue, 多进程Q 
