📄 2501.cpp
字号:
//核心代码
//#define N 30
//fn_is(f(n-1)+2*f(n-2))
//map(1,1)
//map(2,3)
#include <stdio.h>
#define _ACM_INPUT_EOF_(_ACM_FORMAT_, ...) \
int _ACM_I_=-1,_ACM_COUNT_=0; \
for(;scanf(_ACM_FORMAT_, __VA_ARGS__) != EOF;--_ACM_I_) \
#define _ACM_INPUT_COUNT_(_ACM_FORMAT_, ...) \
int _ACM_I_,_ACM_COUNT_; \
scanf("%d",&_ACM_COUNT_); \
for(_ACM_I_=0; \
_ACM_I_<_ACM_COUNT_ && scanf(_ACM_FORMAT_, __VA_ARGS__) != EOF; \
_ACM_I_++) \
#define _ACM_INPUT_VALUE_(_ACM_CONDITION_,_ACM_FORMAT_,...) \
int _ACM_I_=-1,_ACM_COUNT_=0; \
for(;scanf(_ACM_FORMAT_, __VA_ARGS__)!=EOF&&!(_ACM_CONDITION_);--_ACM_I_) \
#define _ACM_OUTPUT_(_ACM_SEPARATORS_,_ACM_FORMAT_,...) \
printf(_ACM_FORMAT_ _ACM_SEPARATORS_, __VA_ARGS__); \
#define _ACM_OUTPUT_STRICT_(_ACM_SEPARATORS_,_ACM_FORMAT_,...) \
if (_ACM_I_ < _ACM_COUNT_-1) { \
if (_ACM_COUNT_) { \
printf(_ACM_FORMAT_ _ACM_SEPARATORS_, __VA_ARGS__); \
} else { \
printf(_ACM_SEPARATORS_ _ACM_FORMAT_, __VA_ARGS__); \
} \
} else { \
printf(_ACM_FORMAT_, __VA_ARGS__); \
} \
#define f(n) F<n>::value
#define fn_is(expr) \
template <int n> struct F { \
static const long long value = expr; \
}; \
#define map(n,v) \
template <> struct F<n> { \
static const long long value = v; \
}; \
// PROBLEM SPECIFIED CODE BEGIN
#define N 30
fn_is(f(n-1)+2*f(n-2))
map(1,1)
map(2,3)
// PROBLEM SPECIFIED CODE END
template <int n, bool cond=(n==1)> struct Wrapper;
template <int n> struct Wrapper<n,false> : public F<n> {
Wrapper<n-1> prev;
long long value;
Wrapper():value(F<n>::value){}
};
template <int n> struct Wrapper<n,true> : public F<n> {
long long value;
Wrapper():value(F<n>::value){}
};
Wrapper<N> w;
const long long *result = &w.value - N;
int main() {
int n;
_ACM_INPUT_COUNT_("%d", &n) {
printf("%I64d\n", result[n]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -