题目描述
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;
}
解析
暂无