原题链接:STIPC-002_D.涛涛的罚坐时刻
D.涛涛的罚坐时刻
题目背景
出题人有话说:本题难度简单,考察了一个小知识点(注意看数据范围哦)
题目描述
众所周知, A C M − I C P C ACM-ICPC ACM−ICPC 是难度极大的编程赛事,涛涛和队友一起参加比赛时做出签到题就开始挂机罚坐了。由于涛涛平常热衷于填色游戏,他就把手上的纸条分割成了 n n n 个线性的竖格(如下图所示),并在每个格子中填入黑色或者白色。由于涛涛非常讨厌在黑色格子后面填上白色,所以整张纸条都不会出现这样结构的填色结构。那么,涛涛一共可以有多少种不同的填色方法呢,还请聪明的你帮忙计算一下。
由于答案可能非常大,请对 20011003 20011003 20011003 取模。
输入格式
输入共一行,一个整数 n n n,表示分割的格子数。
输出格式
输出一个整数,表示方案数。
输入输出样例
样例一:
输入:
1 1 1
输出:
2 2 2说明/提示
对于 50 % 50\% 50% 的测试数据, 0 ≤ n ≤ 1 0 9 0≤n≤10^9 0≤n≤109
对于 100 % 100\% 100% 的测试数据, 0 ≤ n ≤ 1 0 18 0≤n≤10^{18} 0≤n≤1018
题目解析:
本题为简单的思维题,由于黑色的后面不可以填入白色,因此我们选择将纸条全部格子涂白色,然后从尾部开始依次填入黑色达到不同的填色方法故有
(
n
+
1
)
(n+1)
(n+1) 种填色方式。为了方便理解:设白色为
0
0
0 ,黑色为
1
1
1 ,当
n
n
n 为
5
5
5 时,则有以下
6
6
6 种填色方式:
00000
;
00001
;
00011
;
00111
;
01111
;
11111
;
00000;00001;00011;00111;01111;11111;
00000;00001;00011;00111;01111;11111;
当然,本题设置了坑点,因此我们还需要注意数据范围需要开到
l
o
n
g
long
long
l
o
n
g
long
long,并进行对
20011003
20011003
20011003 取模,当然还有一个坑点!!数据范围包括了
n
n
n 为
0
0
0 的情况,因此对
n
n
n 为
0
0
0 进行特判,输出
0
0
0 即可。
AC代码(C++):
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 20011003;
int main()
{
ll n;
ll ans = 0;
cin >> n;
if(n == 0)
{
cout<<0;
return 0;
}
cout << (n+1)%mod;
return 0;
}