zoukankan      html  css  js  c++  java
  • HDNOIP201202计算余数

    试题描述

        对于输入的2n个数据组成的序列,交替进行“删除头端元素”和“将头端元素移至尾端”的操作,直至序列为空。按照元素删除的先后顺序得到了一个与输入顺序不同的新序列,在新序列的相邻元素间依次插入“*”、“+”、“*”、“+”、……,然后求出此算式的结果除以2012的余数。下面是一个n=3的实例:
        输入序列 1 3 5 2 4 6
        删除头端1,剩下 3 5 2 46
        头端3移至尾端变为 5 24 6 3
        删除头端5,剩下 2 4 6 3
        头端2移至尾端变为 4 63 2
        删除头端4剩下 6 3 2
        头端6移至尾端变为 3 26
        删除头端3剩下 2 6
        头端2移至尾端变为 6 2
        删除头端6剩下 2
        头端2移至尾端变为 2
        删除头端2,序列已空
        得到新序列并插入乘号和加号后变为算式:1*5+4*3+6*2,用算式的结果29除以2012余数为29。你的任务是编写代码,由输入的n和2n个数,求出最后的余数。

    输入
    第一行是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 } 
    HDNOIP201202计算余数
  • 相关阅读:
    Redis
    Redis
    Redis
    Redis
    Redis
    Redis
    Distributed
    Sentinel
    Archi
    Redis
  • 原文地址:https://www.cnblogs.com/YXY-1211/p/5169168.html
Copyright © 2011-2022 走看看