Untitled
unknown
c_cpp
5 months ago
1.7 kB
3
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 */ } else if(*print == 'c'){ arg++; Signal[Signal_len++] = *arg; arg += 2; } else{ /* 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