--正文

预处理即可

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> 
using namespace std;

long long n;
long long f[101],sum[101];


int main(){
    f[0] = 0; f[1] = 1;
    sum[1] = 1;
    int i;
    for (i=2;i<=100;i++){
        f[i] = f[i-1] + f[i-2];
        sum[i] = sum[i-1] + f[i];
    }
    while (scanf("%lld",&n) != EOF) {
        if (n == 3) {
            printf("1 1\n"); 
            continue;
        }
        int x = lower_bound(sum,sum+100,n) - sum;
        long long y = n - sum[x-1];
        if (y > f[x-1]) printf("%d %lld\n",x,y);
        else printf("%d %lld\n",x-1,f[x-1]);        
    }
    
    return 0;
}

 

posted on 2016-11-24 18:20  Crutain  阅读(106)  评论(0编辑  收藏  举报