zoukankan      html  css  js  c++  java
  • http://acm.hnu.cn/online/?action=problem&type=show&id=12817&courseid=267 7.19hnu/数据结构/数学 xxs.code

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<deque>
     6 #include<cstdlib>
     7 using namespace std;
     8 typedef long long INT;
     9 const INT MOD = 1000000007; 
    10 const int maxn = 2000000+5;
    11 char str[maxn],temp[maxn];
    12 int get_num(INT s,INT t)
    13 {
    14     for(int i = 0;i < t;++i)
    15     {
    16         s = s >> 1;
    17         if(s == 0)
    18         return 0;
    19     }
    20     return s;
    21 }
    22 int main()
    23 {
    24     while(gets(temp))
    25     {
    26         if(temp[0] == '#')
    27         break;
    28         int len = strlen(temp),f = 0;
    29         for(int i = 0;i < len; ++i)
    30         if(temp[i] != ' ')
    31         str[f++] = temp[i];
    32         str[f] = NULL;
    33         len = f;
    34         deque<INT> que1;
    35         deque<char> que2;
    36         //预处理
    37         for(int i = 0;i < len-2;++i)
    38         if(str[i] == '>' && str[i+1] == '>' && str[i+2] != '>')
    39         str[i] = str[i+1] = '^';
    40         char ss[20];       //缓存数字
    41         for(int i = 0;i < len;++i)
    42         {
    43             if(str[i] == 'S'  || str[i] == 's')
    44             {
    45                 i++;
    46                 que2.push_front('<');
    47             }
    48             if(str[i] == '>')
    49             {
    50                 INT tt = *que1.begin();
    51                 que1.pop_front();
    52                 que2.pop_front();    //计算完后把'<'弹出来
    53                 tt *= tt;
    54                 tt %= MOD;
    55                 if(*que2.begin() == '^')
    56                 {
    57                     INT tt2 = *que1.begin();
    58                     que1.pop_front();
    59                     que1.push_front(get_num(tt2,tt));
    60                     que2.pop_front();
    61                 }
    62                 else que1.push_front(tt);
    63             }
    64             if(str[i] == '^')
    65             {
    66                 i++;
    67                 que2.push_front('^');
    68             }
    69             if(str[i] >= '0' && str[i] <= '9')
    70             {
    71                 int ll = 0;
    72                 while(str[i] >= '0' && str[i] <= '9')
    73                 {
    74                     ss[ll++] = str[i];
    75                     i++;
    76                 }
    77                 i--;
    78                 ss[ll] = NULL;
    79                 int tt = atoi(ss);
    80                 if(*que2.begin() == '^')
    81                 {
    82                     int tt2 = *que1.begin();
    83                     que1.pop_front();
    84                     que2.pop_front();
    85                     que1.push_front(get_num(tt2,tt));  //get_num计算tt2 >> tt之后压回到栈中
    86                 }
    87                 else que1.push_front(tt);
    88             }
    89         }
    90         
    91         printf("%d
    ",*que1.begin());
    92         que2.clear();
    93         que1.clear();
    94     }
    95     return 0;
    96 }
  • 相关阅读:
    NBUT 1120 Reimu's Teleport (线段树)
    NBUT 1119 Patchouli's Books (STL应用)
    NBUT 1118 Marisa's Affair (排序统计,水)
    NBUT 1117 Kotiya's Incantation(字符输入处理)
    NBUT 1115 Cirno's Trick (水)
    NBUT 1114 Alice's Puppets(排序统计,水)
    188 Best Time to Buy and Sell Stock IV 买卖股票的最佳时机 IV
    187 Repeated DNA Sequences 重复的DNA序列
    179 Largest Number 把数组排成最大的数
    174 Dungeon Game 地下城游戏
  • 原文地址:https://www.cnblogs.com/acplayfacm/p/3855918.html
Copyright © 2011-2022 走看看