UVA_2379 Help is needed for Dexter(math)

来源:互联网 发布:自制编程语言 编辑:程序博客网 时间:2024/06/06 05:30

题目请点我
题解:
容易发现是可以不断降维的,奇数从最中间往后都减去中值,可以得到两个相同的子列以及中间一个0;偶数类似,得到两个相同的子列。同学直接对N以2为底取对数思路也是一样的。
代码实现:

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#define LL long longusing namespace std;int N;int a[4] = {0,1,2,2};int result;int main(){    while( scanf("%d",&N) != EOF ){        result = 0;        while( N >= 3 ){            if( N%2 == 0 ){                result++;                N = N/2;            }            else{                result++;                N = (N-1)/2;            }        }        result += a[N];        printf("%d\n",result);    }    return 0;}
0 0
原创粉丝点击