【思維】過分的謎題

題目描述

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所在的位置判斷出還需要進行幾步到達第一位,當1恢復原位后,會發現其他數也恢復原位,因此可以知道在經過num步后,當1到達n+1位置時,則還需要1步恢復原位,當1到達n*2時,還需要num步恢復原位,對于其他的情況,則根據它所處的位置,假如1當前的位置時x,當n<x<=2*n時,下一步到達(x-n)*2-1,若1<=x<=n時,下一步到達x*2位,并標記經過的位置,若走到已走過的位置,則證明無法實現,輸出-1(ps:這題好像并不會出現這種情況)

代碼:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
bool vis[22000];
int main() 
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);ios::sync_with_stdio(0),cin.tie(0);int n;while(scanf("%d",&n)!=EOF) {fill(vis+1,vis+1+2*n,false);int t=1;int num=0;for(int k=0;;k++) {t=t+(1<<k);if(t>2*n) {t=t-(1<<k);break;}num++;vis[t]=true;}if(t==n+1) printf("%d\n",num+1);else if(t==n*2) printf("%d\n",num*2);else {int nape=t;while(1) {if(nape>n) {nape=(nape-n)*2-1;num++;if(nape==n+1) {printf("%d\n",num+1);break;}if(nape==1) {printf("%d\n",num);break;}if(nape==n*2) {printf("%d\n",num*2);break;}if(vis[nape]==true) {printf("-1\n");break;}else {vis[nape]=true;continue;}}else {nape=nape*2;num++;if(nape==n+1) {printf("%d\n",num+1);break;}if(nape==1) {printf("%d\n",num);break;}if(nape==n*2) {printf("%d\n",num*2);break;}if(vis[nape]==true) {printf("-1\n");break;}else {vis[nape]=true;continue;}}}}}return 0;
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536308.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536308.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536308.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【bfs】調酒壺里的酸奶

題目描述 最近小w學了一手調酒的技巧&#xff0c;這么帥的操作&#xff0c;說不定能靠這個俘獲女神的芳心&#xff0c;為了在女神面前露一手&#xff0c;他想在學校里建一個"pub"&#xff0c;但是顯然學校不可能讓他真的建一個"pub"&#xff0c;那么他退而…

【dfs】Election of Evil

題目描述 Dylan is a corrupt politician trying to steal an election. He has already used a mind-control technique to enslave some set U of government representatives. However, the representatives who will be choosing the winner of the election is a di?ere…

【思維】Iranian ChamPions Cup

題目描述 The Iranian ChamPions Cup (ICPC), the most prestigious football league in Iran, is reaching its end, and people are eagerly waiting for the finals, which happened to be between the two most popular Iranian teams, Persepolis and Esteghlal. The ICP…

【數學】Chaarshanbegaan at Cafebazaar

題目描述 Chaarshanbegaan is a gathering event at Cafebazaar similar to TGIF events at Google. Some entertainment programs like pantomime, foosball, Xbox/PS4, and several board games are part of the event. You are going to set up a dart game in Chaarshanbe…

【思維】Congestion Charging Zone

題目描述 Tehran municipality has set up a new charging method for the Congestion Charging Zone (CCZ) which controls the passage of vehicles in Tehran’s high-congestion areas in the congestion period (CP) from 6:30 to 19:00. There are plate detection came…

【二分】LED

題目描述 A Light-Emitting Diode (LED) is a semiconductor light source, which emits light when an electric current of voltage higher than a threshhold is applied to its leads. ACM R&D recently reported that they have succesfully developed a new LED, na…

【差分數組】Master of GCD

題目描述 Hakase has n numbers in a line. At fi rst, they are all equal to 1. Besides, Hakase is interested in primes. She will choose a continuous subsequence [l, r] and a prime parameter x each time and for every l≤i≤r, she will change ai into ai*x. To…

【模擬】Ground Defense

題目描述 You are a denizen of Linetopia, whose n major cities happen to be equally spaced along an east-west line. In fact, they are often numbered in order from 1 to n, where 1 is the westmost city and n is the eastmost city. Linetopia was a lovely plac…

【模擬】Bulbs

題目描述 Greg has an m n grid of Sweet Lightbulbs of Pure Coolness he would like to turn on. Initially, some of the bulbs are on and some are off. Greg can toggle some bulbs by shooting his laser at them. When he shoots his laser at a bulb, it toggles th…

【模擬】Ingenious Lottery Tickets

題目描述 Your friend Superstitious Stanley is always getting himself into trouble. This time, in his Super Lotto Pick and Choose plan, he wants to get rich quick by choosing the right numbers to win the lottery. In this lottery, entries consist of six dis…

【數學】Hunter’s Apprentice

題目描述 When you were five years old, you watched in horror as a spiked devil murdered your parents. You would have died too, except you were saved by Rose, a passing demon hunter. She ended up adopting you and training you as her apprentice. Rose’s cur…

【模擬】Thanks, TuSimple!

題目鏈接&#xff1a;http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId5979 Thanks, TuSimple! Time Limit: 1 Second Memory Limit: 65536 KB In the very first sentence of the very first problem, we would like to give our sincere thanks to TuSimple,…

【二維差分】Monitor

Monitor 題目&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid6514 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 163840/163840 K (Java/Others) Total Submission(s): 600 Accepted Submission(s): 190 Problem Description Xiaoteng has a la…

【數學】MORE XOR

Given a sequence of nnn numbers a1,a2,?&ThinSpace;,ana_1, a_2,\cdots, a_na1?,a2?,?,an? and three functions. Define a function f(l,r)f(l,r)f(l,r) which returns ⊕a[x](l≤x≤r)\oplus a[x] (l \le x \le r)⊕a[x](l≤x≤r). The \oplus⊕ represents excl…

【數學】Element Swapping

Element Swapping Time Limit: 1 Second Memory Limit: 65536 KB DreamGrid has an integer sequence a1,a2,a3,…,ana_1,a_2,a_3,\dots,a_na1?,a2?,a3?,…,an? and he likes it very much. Unfortunately, his naughty roommate BaoBao swapped two elements aia_iai? an…

【二分+二維前綴和】Largest Allowed Area

Largest Allowed Area 時間限制: 1 Sec 內存限制: 128 MB 提交: 146 解決: 54 [提交] [狀態] [命題人:admin] 題目描述 A company is looking for land to build its headquarters. It has a lot of money and can buy as many land patches as it needs. Its goal, howev…

【數學】Floating-Point Hazard

Floating-Point Hazard 時間限制: 1 Sec 內存限制: 128 MB 提交: 106 解決: 42 [提交] [狀態] [命題人:admin] 題目描述 Given the value of low, high you will have to find the value of the following expression: If you try to find the value of the above express…

【manacher】Strings in the Pocket

Strings in the Pocket Time Limit: 1 Second Memory Limit: 65536 KB BaoBao has just found two strings ss1s2…snss_1s_2\dots s_nss1?s2?…sn? and tt1t2…tntt_1t_2\dots t_ntt1?t2?…tn? in his left pocket, where sis_isi? indicates the iii-th character in…

【并查集+dp】Team

Team 時間限制: 1 Sec 內存限制: 128 MB 提交: 124 解決: 10 [提交] [狀態] [命題人:admin] 題目描述 ACM-ICPC is a interesting game. A team takes part in this game must consist of exactly (no more and no less) three players. Every year, many new members wil…

【線段樹】Segment Tree

Segment Tree 時間限制: 1 Sec 內存限制: 512 MB 提交: 107 解決: 23 [提交] [狀態] [命題人:admin] 題目描述 Mcginn opens the code which he wrote 25 years ago. Clever Mcginn wants to know how many positive interger n satis?ed that the maximum c can reach w…