[GO] Merci d'avoir enregistré 100 000 paiza.
Qu'est-ce que c'est
Il y a eu la campagne spéciale de remerciement des 100 000 inscriptions de paiza.
Il semble qu'il soit populaire de résumer, donc à la fois moi et moi.
Au fait, mon oncle est uniquement en langage C.
algorithme
--Préparer une grande séquence
--Marquez le s_i * s_j chargé
--Compte de p_i et sortie du nombre avancé à la marque
code
Je l'ai écrit et je ne savais pas lequel j'ai soumis (ぉ)
Probablement celui-ci.
i,j,S[1<<20],F[4096];
main(X)
{
for(;~scanf("%d",F+i++);)
for(j=*S=*F+2;j<i;S[X<S-F?X:0]=1)
X=F[i-1]*F[j++];
for(i=1;++i-*S;printf("%d\n",j-X))
for(X=j=F[i];!S[j];++j);
}
C'est fondamentalement la même chose que fuyutsubaki.
Un pied de serpent nommé commentaire
- Lisez M, N, p \ _m, s \ _n dans le tableau F.
- M = F [0], N = F [1], p \ _m = F [2 .. F [0] +2], s \ _n = F [F [0] +2 .. F [1] Ce sera en +2].
(\ * S est indiqué par F [0] +2 == s_0)
- Pendant la lecture, calculez X = s_i \ * s_j et définissez S [X] sur 1 s'il s'inscrit dans le grand tableau S.
(Pour vérifier si cela correspond, je calcule la taille du grand tableau S avec SF, mais il semble que c'est l'inverse (FS), mais cela ne peut pas être aidé car le gcc à portée de main laisse tomber ce code. .)
- Pour p_m, comptez et sortez le nombre du grand tableau S [p_m] jusqu'à ce qu'une sortie non nulle apparaisse.
Autocritique
- Au début, j'ai pensé que la taille du code était "le nombre d'octets dans le fichier d'exécution" et j'ai réécrit printf en putchar, et j'ai trop réfléchi.
- J'étais trop précis à propos de 1000000.
- J'ai trop pensé à tirer parti des effets secondaires avec la fonction qsort.
- J'ai trop pensé à traiter le tableau comme char et à essayer de trouver le nombre jusqu'à la marque avec la fonction strlen.
- Si s_i et s_j sont élémentaires, vous pouvez utiliser le théorème du reste chinois, non? J'ai pensé, et mon intérêt s'est tourné vers une petite rue.
- Je n'étais pas un golfeur de base, mais je ne pouvais pas trop le faire.
Tout cela vient du terrain.