Untitled
unknown
c_cpp
a year ago
1.8 kB
5
Indexable
#include <stdio.h>
#include <string.h>
char s[10010], Signal[10010];
int Gen(int init, char *str){
int mul = 37, mod = 1e9 + 7;
long long ret = init, len = strlen(str);
for(int i = 0; i < len; i++){
ret *= mul;
ret += str[i];
ret %= mod;
}
return ret;
}
int main() {
int t;
scanf("%d\n", &t);
for (int i = 0; i < t; i++) {
fgets(s, 100010, stdin);
int len = strlen(s);
s[len-1] = '\0';
int N = 1, M = 2;
int pos = 0;
if(strncmp(s, "for", 3) == 0){
pos = strcspn(s, "=") + 1;
int num = 0;
for (; pos < len; pos++) {
if (s[pos] == ';') {
pos++;
break;
}
num = num * 10 + s[pos] - '0';
}
N = num;
num = 0;
pos = strcspn(s, "<") + 2;
for (; pos < len; pos++) {
if (s[pos] == ';') {
pos++;
break;
}
num = num * 10 + s[pos] - '0';
}
M = num;
}
char *print = strtok(s, "\"");
print = strtok(NULL, "\"");
char *arg = print;
arg = strtok(NULL, "\"");
int Signal_len = 0;
if(arg && strcmp(arg, ");") == 0){
strcpy(Signal, print);
Signal_len = strlen(Signal);
}
else if(arg){
while(*print){
if(*print == '%'){
print++;
arg += 2;
if(*print == 'd'){
/* TODO
while(*arg >= '0' && *arg <= '9'){
Signal[Signal_len++] = *arg;
arg++;
}
*/
}
else if(*print == 'c'){
arg++;
Signal[Signal_len++] = *arg;
arg += 2;
}
else{ // %Ad
/* TODO
*/
}
}
else Signal[Signal_len++] = *print;
print++;
}
}
// for (int j = N; j < M; j++)
// printf("%s", Signal);
int ans = 0;
for (int j = N; j < M; j++)
ans = Gen(ans, Signal);
printf("%d\n", ans);
memset(Signal, 0, Signal_len);
}
}Editor is loading...
Leave a Comment