UVA 10479 The Hendrie Sequence
2017-08-25 21:27
246 查看
https://vjudge.net/problem/UVA-10479
打表找规律:
1、根据n可以确定第n项在上表中第i行
2、减去前i-1行,就得到了n在第i行的第j个
3、第i行的规律:1个i-2行,2个i-3行,3个i-4行……
转化为子问题继续下去
打表找规律:
1、根据n可以确定第n项在上表中第i行
2、减去前i-1行,就得到了n在第i行的第j个
3、第i行的规律:1个i-2行,2个i-3行,3个i-4行……
转化为子问题继续下去
#include<cstdio> #include<iostream> using namespace std; typedef unsigned long long LL; LL bit[65],z[65]; int main() { LL n,sum; int r,num,cnt; for(LL i=0;i<=63;i++) bit[i]=1ll<<i; z[0]=z[1]=1; for(int i=2;i<=63;i++) z[i]=z[i-1]<<1; while(cin>>n) { if(!n) return 0; int i; for(i=0;;i++) if(bit[i]>n) break; n-=bit[i-1]; if(!n) { printf("%d\n",i-1); continue;} r=i; while(n) { if(r==0) { printf("0\n"); break; } if(r==1) { printf("1\n"); break; } sum=0; for(num=r-2,cnt=1;num>=0;num--,cnt++) if(sum+z[num]*cnt>=n) break; else sum+=z[num]*cnt; n-=sum; while(cnt && n>=z[num]) n-=z[num],cnt--; if(!n) printf("%d\n",num); r=num; } } }
相关文章推荐
- uva 10479——The Hendrie Sequence
- uva 10479 - The Hendrie Sequence(规律+递归)
- UVA 694-The Collatz Sequence
- 694 - The Collatz Sequence---关于goto语句的一些反思(还有uva的Runtime Error问题的解决)
- UVA 1546 - Complete the sequence!(差分法)
- uva 1546 - Complete the sequence!(牛顿插值法)
- UVA 694 - The Collatz Sequence
- UVA 10479 - The Hendrie Sequence(规律+递归)
- UVA 1546 - Complete the sequence!(差分法)
- UVa 694 The Collatz Sequence
- UVa 694 - The Collatz Sequence
- UVa 694 The Collatz Sequence(序列)
- UVA 694 - The Collatz Sequence
- UVA 694 - The Collatz Sequence
- UVA 10479 The Hendrie Sequence 规律
- uva694 The Collatz Sequence
- UVa 694 The Collatz Sequence (数论)
- UVA 694 - The Collatz Sequence
- UVa 694 - The Collatz Sequence
- uva-694 - The Collatz Sequence