Sushi variegato


#1

ho scritto un programma per risolvere suschi variegato.
(testo)
credo che il problema sia un errore di mancata comprensione da parte mia del problema.da quello che ho capito dal testo bisogna contare il numero di pezzi di suschi diversi metterli nella formula 2^(n-1) dove n è il numero di suchi consecutivi diversi e moltiplicarli tra loro per avere tutte le varie possibilità.

    #include <vector>
    #include <complex>
    #include <math.h>

    using namespace std;

    int taglia(int N, int V[]) {
        vector<int> arr;
        int time = 0;
        for (int i = 1; i < N; ++i) {
            if (V[i - 1] == V[i]) {
                if (time > 0)
                    arr.push_back(time);
                time = 0;
            } else {
                time += 1;
            }
        }
        if (time > 0)
                arr.push_back(time);
        unsigned long last = 1;
        for (int i = 0; i < arr.size(); ++i) {
            last *= powl(2, arr[i]);
        }
        return last % 1000000007;
    }

#2

Ciao, nella tua soluzione non consideri un caso particolare:

3
1 2 1

Le possibili soluzione sono:

  • \fbox{1 2 | 1}
  • \fbox{1 | 2 1}
  • \fbox{1 | 2 | 1}

e quindi la risposta è 3, mentre il tuo programma stampa 4.

Un piccolo indizio

Si scrive “sushi” :man_facepalming:


#3

In ogni caso ricordarti di applicare il modulo ad ogni passaggio e non solo alla fine, altrimenti perde il suo scopo.