若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

1016: Easy List Operations

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,296

题目描述

A list is a sequence of or more elements, expressed in this form: [a 1 , a 2 , a 3 , … , a n ], where each a i
is or more consecutive digits or lowercase letters. i.e. each list begins with a left square bracket,
then zero or more elements separated by a single comma, followed by a right square bracket. There will
be no whitespace characters (spaces, TABs etc) within a list.
In this problem, we use two list operations: append (++) and remove (–).
1. A ++ B: append elements in B to the end of A.
2. A — B: remove all the elements in B, from A. If something appears more than once in B, remove it that
many times in A. If there are many equal elements in A to choose from, remove them from left to right
(until all occurrences are removed, or there is no need to remove more elements).
Your task is to write a calculator, evaluating simple expressions or the form "list1 ++ list2" or "list1 —
list2".

输入

There will be at most 10 expressions, one in each line, each having the form "list1 ++ list2" or "list1 —
list2", with no more than 80 characters in total (not counting the newline character). There will be exactly
two spaces in each line: one before and one after the operator. Input ends with a single dot. The input is
guaranteed to satisfy the restrictions stated above.

输出

For each expression, print its result on a single line.

样例输入

[1,2,3] ++ [1,2,3]
[a,b,c,t,d,e,t,x,y,t] -- [t]
[a,b,c,t,d,e,t,x,y,t] -- [t,t,t,t]
[123] ++ [456]
.

样例输出

[1,2,3,1,2,3]
[a,b,c,d,e,t,x,y,t]
[a,b,c,d,e,x,y]
[123,456]

参考代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int mod10(int x) 
{
    int a=1,i;
    for (i=0;i<x;i++)
            a=(a*10)%101;
    return a;
}
int bit(char c) 
{
    if(c>'C') 
    {
        if(c>'I')
                    return 3; else
                    return 2;
    } else
            return 1;
}
int main() 
{
    int i,j,k,l,len,n,t,sum;
    int shu[1000];
    char s[100];
    scanf("%d",&t);
    while(t--) 
    {
        n=0;
        sum=0;
        scanf("%s",s);
        len=strlen(s);
        for (i=0;i<len;i++) 
        {
            if(s[i]>='a')
                            s[i]-=32;
        }
        for (i=0,j=0;i<len;i++) 
        {
            n=(s[i]-'A'+1)*(s[i]-'A'+1);
            k=bit(s[i]);
            j+=k;
            for (l=1;l<=k;l++) 
            {
                shu[j-l]=n%10;
                n/=10;
            }
        }
        for (i=j-1,k=0;i>=0;i--,k++)
                    sum+=(shu[i]*mod10(k))%101;
        printf("%dn",sum%101);
    }
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Skip Dreams孤独患者 原站点
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist