[Codeforces Round #247 (Div. 2)] A. Black Square
A. Black Square
Quite recently, a very smart student named Jury decided that lectures are boring, so he downloaded a game called "Black Square" on his super cool touchscreen phone.
In this game, the phone's screen is divided into four vertical strips. Each second, a black square appears on some of the strips. According to the rules of the game, Jury must use this second to touch the corresponding strip to make the square go away. As Jury is both smart and lazy, he counted that he wastes exactly ai calories on touching the i-th strip.
You've got a string s, describing the process of the game and numbers a1, a2, a3, a4. Calculate how many calories Jury needs to destroy all the squares?
The first line contains four space-separated integers a1, a2, a3, a4 (0 ≤ a1, a2, a3, a4 ≤ 104).
The second line contains string s (1 ≤ |s| ≤ 105), where the і-th character of the string equals "1", if on the i-th second of the game the square appears on the first strip, "2", if it appears on the second strip, "3", if it appears on the third strip, "4", if it appears on the fourth strip.
Print a single integer — the total number of calories that Jury wastes.
1 2 3 4
123214
13
1 5 3 2
11221
13
题解:直接模拟。
代码:
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdbool.h> 4 #include<stdlib.h> 5 #include<math.h> 6 #include<ctype.h> 7 #include<time.h> 8 9 #define rep(i,a,b) for(i=(a);i<=(b);i++) 10 #define red(i,a,b) for(i=(a);i>=(b);i--) 11 #define sqr(x) ((x)*(x)) 12 #define clr(x,y) memset(x,y,sizeof(x)) 13 #define LL long long 14 15 int i,j,n,m,sum, 16 a[10]; 17 18 char b[110000]; 19 20 void pre() 21 { 22 clr(a,0); 23 clr(b,'\0'); 24 sum=0; 25 } 26 27 int init() 28 { 29 rep(i,1,4) 30 scanf("%d",&a[i]); 31 getchar(); 32 scanf("%s",b); 33 return 0; 34 } 35 36 int main() 37 { 38 int i,len; 39 40 pre(); 41 init(); 42 len=strlen(b); 43 len--; 44 45 rep(i,0,len) 46 sum+=a[b[i]-'0']; 47 48 printf("%d\n",sum); 49 50 return 0; 51 }