#include <cstdio>
int main(){
int kase, aNum, bNum, i;
scanf("%d", &kase);
while(kase--){
scanf("%d%d", &aNum, &bNum);
int sum1 = 0, sum2 = 0, t;
for(i = 0; i < aNum; i++){
scanf("%d", &t);
sum1 += t;
}
for(i = 0; i < bNum; i++){
scanf("%d", &t);
sum2 += t;
}
if(sum1 == sum2)
printf("Draw\n");
else printf("%s\n", sum1 > sum2 ? "Calem" : "Serena");
}
return 0;
}
#include <stdio.h>/*int pos[9][9]={{0,0,0,0,0,0,0,0},{0,1,1,1,1,1,1,1},{0,2,4,1,2,4,1,2},{0,3,2,6,4,5,1,3},{0,4,2,1,4,2,1,4},{0,5,4,6,2,3,1,5},{0,6,1,6,1,6,1,6,1},{0,0,0,0,0,0,0,0}};*/char WD[7][10] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};int pos[9][9]={{0,0,0,0,0,0,0,0},{0,1,4,6,4,3,1,0},{0,1,1,4,2,1,6,0},{0,1,2,5,1,5,1,0},{0,1,4,1,4,5,6,0},{0,1,1,3,2,4,1,0},{0,1,2,3,1,6,6,0},{0,1,4,2,4,2,1,0}};int mod_sum(int n){ int ans=0; for(int i=1;i<=n;i++){ for(int j=1;j<=7;j++) ans+=pos[i][j]; } return ans%7; }int mod_end_sum(int end_r){ int ans=0; for(int i=1;i<=end_r;i++) for(int j=1;j<=7;j++) { ans+=pos[i][j]; } return ans%7;}int end_line_sum(int end_r,int end_c){ int ans=0; for(int i=1;i<=end_c;i++) ans += pos[end_r+1][i]; return ans%7;}int main(){ int N; int mod_N,d_d_N,d_mod_N,d_N; int tcase; int mod_all=mod_sum(7); scanf("%d",&tcase); while(tcase--){ scanf("%d",&N); int sum=0; d_mod_N=0; mod_N=0; mod_N=N%7; if(mod_N==0) mod_N=7; d_N=N/7; if(d_N>0){ d_mod_N=d_N%7; d_d_N=d_N/7; if(d_mod_N==0) d_mod_N=7; if(d_d_N>0) sum+=d_d_N*mod_all%7; sum+=mod_end_sum(d_mod_N); } sum+=end_line_sum(d_mod_N,mod_N); if(sum%7) sum=sum%7; else sum=7; printf("%s\n",WD[sum-1]); } return 0; }
表达式
#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;
struct node{
int v;
node *l, *r;
node(int c){
v = c;
l = r = NULL;
}
};
stack<node*> p;
stack<char> q;
char str[1024];
int len;
int getOrder(char c){
switch(c){
case '+': case '-':
return 0;
case '*': case '/': case '%':
return 1;
}
}
void PUSH(int &i){
int tmp = 0;
while(str[i] <= '9' && str[i] >= '0'){
tmp *= 10;
tmp += str[i] - '0';
i++;
}
node *t = new node(tmp);
p.push(t);
i--;
}
void buildNode(){
node *t1, *t2;
char s;
t2 = p.top(); p.pop();
t1 = p.top(); p.pop();
s = q.top(); q.pop();
node *N = new node(s);
N->l = t1;
N->r = t2;
p.push(N);
}
void buildTree(){
for(int i = 0; i < len; i++){
//printf("Accessing char \"%c\"\n", str[i]);
if(str[i] == ' ') continue;
else if(str[i] >= '0' && str[i] <= '9')
PUSH(i);
else{
if(!q.empty() && getOrder(q.top()) >= getOrder(str[i]))
buildNode();
q.push(str[i]);
}
}
while(!q.empty()) buildNode();
}
void POTraverse(node *t){
if(t){
POTraverse(t->l);
POTraverse(t->r);
printf("%c", t->v);
}
}
int calc(int a, int b, char s){
switch(s){
case '+':
return a + b;
case '-':
return a - b;
case '*':
return a * b;
case '/':
return a / b;
case '%':
return a % b;
}
}
int solveIt(node *t){
if(t){
if(!t->l){
//printf("Accessing Operand %d\n", t->v);
return t->v;
}else{
//printf("Accessing Operator %c\n", t->v);
int a = solveIt(t->l);
int b = solveIt(t->r);
return calc(a, b, t->v);
}
}
return 0;
}
int main(){
int kase;
scanf("%d ", &kase);
while(kase--){
//scanf("%s", str);
gets(str);
len = strlen(str);
buildTree();
//POTraverse(p.top());
//printf("\n");
printf("%d\n", solveIt(p.top()));
p.pop();
}
return 0;
}