子序列个数
欢迎进入我的C语言世界
题目
Problem Description
子序列的定义:对于一个序列a=a[1],a[2],…a[n]。则非空序列a’=a[p1],a[p2]…a[pm]为a的一个子序列,其中1<=p1<p2<…<pm<=n。
例如4,14,2,3和14,1,2,3都为4,13,14,1,2,3的子序列。
对于给出序列a,请输出不同的子序列的个数。(由于答案比较大,请将答案mod 1000000007)
Input
输入包含多组数据。每组数据第一行为一个整数n(1<=n<=1,000,000),表示序列元素的个数。
第二行包含n个整数a[i] (0<=a[i]<=1,000,000)表示序列中每个元素。
Output
输出一个整数占一行,为所求的不同子序列的个数。由于答案比较大,请将答案mod 1000000007。
Sample Input
4
1 2 3 2
Sample Output
13
答案
下面展示 实现代码
。
#include <stdio.h>
#include <string.h>
long long d[1000007];//d[i]表示前i个元素可以生产的不同的子序列的个数
int p[1000007]; //记录某元素最后一次出现的位置
#define mod