试题描述
|
对于输入的2n个数据组成的序列,交替进行“删除头端元素”和“将头端元素移至尾端”的操作,直至序列为空。按照元素删除的先后顺序得到了一个与输入顺序不同的新序列,在新序列的相邻元素间依次插入“*”、“+”、“*”、“+”、……,然后求出此算式的结果除以2012的余数。下面是一个n=3的实例: |
输入
|
第一行是n。下面是2n个小于1000000的正整数。
|
输出
|
输出一个整数即题目所求的余数。
|
输入示例
|
3 1 3 5 2 4 6 |
输出示例
|
29
|
其他说明
|
60%的数据 n<5,100%的数据 n<100
|
用队列做。
1 #include <iostream> 2 #include <queue> 3 using namespace std; 4 queue<int> Q; 5 int a[101]; 6 int main() 7 { 8 int n; 9 int temp; 10 scanf("%d",&n); 11 for(int i=1;i<=2*n;i++) {scanf("%d",&temp);Q.push(temp);} 12 for(int i=1;i<=2*n;i++) 13 { 14 a[i]=Q.front(); 15 Q.pop(); 16 temp=Q.front(); 17 Q.pop(); 18 Q.push(temp); 19 } 20 int ans=0; 21 for(int i=1;i<=2*n;i+=2) {ans+=a[i]*a[i+1];ans=ans%2012;} 22 printf("%d",ans); 23 system("pause"); 24 return 0; 25 }