uva 10479——The Hendrie Sequence
生活随笔
收集整理的這篇文章主要介紹了
uva 10479——The Hendrie Sequence
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:開始一個數0,然后0變成1,后邊的變換規則是如果當前是k就在后邊加上k-1個0,然后再加上k-1,該問題求該序列的第n個數是多少。
思路:規律的題目。將串分成1,1,2,4,8,然后會發現s=1個s-2,2個s-3,3個s-4……然后n要用unsigned long long 。
code:
#include <bits/stdc++.h> using namespace std;typedef unsigned long long ull;int dfs(ull n,int p){int q=1;ull k;for (int i=p-2;i>=0;i--){if (i) k=1ll<<(i-1);else k=1;for (int j=0;j<q;j++){if (k<n) n-=k;else return dfs(n,i);}q++;}return p; } int sol(ull n){if (n==1) return 0;n--;for (int i=0;;i++){ull t=1ll<<i;if (t<n) n-=t;else return dfs(n,i+1);} } int main() {ull n;while (cin>>n&&n){cout<<sol(n)<<endl;} }總結
以上是生活随笔為你收集整理的uva 10479——The Hendrie Sequence的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 月经失调不孕不育症
- 下一篇: HTML富文本中,如何实现加粗按钮后,输