#include #include int main() { // Načtení vstupu int N; scanf("%d\n", &N); char cislo[N]; scanf("%s", cislo); // Postupně projdeme číslo a místo všech otazníků doplníme 0 (se // speciální výjimkou otazníku na začátku čísla). Současně si budeme // počítat i ciferný součet. // Budeme si ale pamatovat pozici posledního otazníku a až projdeme celé // číslo, vrátíme se na tuto pozici a číslo změníme na jiné, aby seděla // dělitelnost ciferného součtu 9 (a protože může i ciferný součet být // velký, budeme ho raději průběžně modulit 9). // Speciální ošetření prvního znaku: if (cislo[0] == '?') cislo[0] = '1'; int posledniOtaznik = 0; int cifernySoucet = cislo[0] - '0'; // Převod z ASCII hodnoty na číslo for(int i = 1; i < N; i++) { if (cislo[i] == '?') { posledniOtaznik = i; cislo[i] = '0'; } cifernySoucet = (cifernySoucet + cislo[i] - '0') % 9; } // Vrátíme se k poslednímu otazníku a změníme ho tak, aby byl ciferný // součet dělitelný 9: int rozdil = (9 - cifernySoucet) % 9; // Přičteme rozdíl (který je maximálně 8) k aktuální hodnotě na dané // pozici (což je 1 nebo 0): cislo[posledniOtaznik] += rozdil; // Vypíšeme výsledné číslo: for(int i = 0; i < N; i++) putchar(cislo[i]); printf("\n"); return 0; }