Skip to content

Commit 5d53b69

Browse files
committed
new: France-IOI remaining level 3 problems
1 parent 63c7cf9 commit 5d53b69

37 files changed

+1297
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include <math.h>
2+
#include <stdio.h>
3+
#include <stdlib.h>
4+
5+
int main() {
6+
int Nombre;
7+
scanf(" %d", &Nombre);
8+
9+
int puissance = 1;
10+
while (Nombre > pow(2, puissance)) puissance++;
11+
12+
int binaire[puissance];
13+
int i = 0, P = puissance - 1;
14+
while (i < puissance) {
15+
binaire[i] = 0;
16+
i++;
17+
}
18+
19+
i = puissance - 1;
20+
while (i >= 0) {
21+
if (Nombre >= pow(2, P)) {
22+
Nombre -= pow(2, P);
23+
binaire[i] = 1;
24+
}
25+
i--;
26+
P--;
27+
}
28+
29+
i = puissance - 1;
30+
while (i >= 0) {
31+
printf("%d", binaire[i]);
32+
i--;
33+
}
34+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include <math.h>
2+
#include <stdio.h>
3+
#include <string.h>
4+
5+
int main() {
6+
int B_Arrivee, B_Depart, Nb_Depart;
7+
scanf(" %d %d %d", &B_Depart, &B_Arrivee, &Nb_Depart);
8+
9+
int Nombre = 0;
10+
for (int Chiffre = Nb_Depart - 1; Chiffre >= 0; Chiffre--) {
11+
int Entier;
12+
scanf(" %d", &Entier);
13+
Nombre += pow(B_Depart, Chiffre) * Entier;
14+
}
15+
16+
int Nb_Arivee = 0;
17+
int N = Nombre;
18+
if (N == 0)
19+
Nb_Arivee = 1;
20+
else
21+
while (N != 0) {
22+
N /= B_Arrivee;
23+
Nb_Arivee++;
24+
}
25+
26+
int resultat[Nb_Arivee];
27+
for (int Chiffre = Nb_Arivee - 1; Chiffre >= 0; Chiffre--) {
28+
resultat[Chiffre] = Nombre % B_Arrivee;
29+
Nombre /= B_Arrivee;
30+
}
31+
32+
for (int Chiffre = 0; Chiffre < Nb_Arivee; Chiffre++)
33+
printf("%d ", resultat[Chiffre]);
34+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#include <math.h>
2+
#include <stdio.h>
3+
#include <string.h>
4+
5+
int main() {
6+
char Nombre[26];
7+
scanf(" %s", Nombre);
8+
9+
int L = strlen(Nombre);
10+
int resultat = 0;
11+
for (int chiffre = 0; chiffre < L; chiffre++)
12+
if (Nombre[chiffre] == '1') resultat += pow(2, L - chiffre - 1);
13+
14+
printf("%d", resultat);
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#include <math.h>
2+
#include <stdio.h>
3+
#include <string.h>
4+
5+
int main() {
6+
int Base, NbChiffres;
7+
scanf(" %d %d", &Base, &NbChiffres);
8+
9+
int resultat = 0;
10+
int Entier;
11+
for (int Chiffre = NbChiffres - 1; Chiffre >= 0; Chiffre--) {
12+
scanf(" %d", &Entier);
13+
resultat += pow(Base, Chiffre) * Entier;
14+
}
15+
16+
printf("%d", resultat);
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#include <ctype.h>
2+
#include <math.h>
3+
#include <stdio.h>
4+
#include <string.h>
5+
6+
int conversion(char Nombre[]) {
7+
int L = strlen(Nombre);
8+
int resultat = 0;
9+
for (int caractere = 0; caractere < L; caractere++) {
10+
if (isupper(Nombre[caractere]))
11+
Nombre[caractere] -= 55;
12+
else
13+
Nombre[caractere] -= 48;
14+
resultat += ((int)Nombre[caractere]) * (pow(16, L - caractere - 1));
15+
}
16+
return resultat;
17+
}
18+
19+
int main() {
20+
char Nombre[2];
21+
scanf(" %s", Nombre);
22+
23+
int pre_resultat = 0;
24+
int N = conversion(Nombre);
25+
char hexadecimal[4];
26+
for (int lire = 0; lire < N; lire++) {
27+
scanf(" %s", hexadecimal);
28+
pre_resultat += conversion(hexadecimal);
29+
}
30+
pre_resultat /= N;
31+
32+
char resultat[4];
33+
int caractere = 0;
34+
for (caractere = 0; caractere < 4; caractere++) {
35+
if ((pre_resultat % 16) / 10 >= 1) {
36+
int Entier = (pre_resultat % 16) % 10 + 65;
37+
resultat[caractere] = Entier;
38+
} else
39+
resultat[caractere] = (pre_resultat % 16);
40+
pre_resultat /= 16;
41+
if (pre_resultat == 0) break;
42+
}
43+
44+
for (int i = caractere; i >= 0; i--)
45+
if ((int)resultat[i] < 10)
46+
printf("%d", (int)resultat[i]);
47+
else
48+
printf("%c", resultat[i]);
49+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#include <math.h>
2+
#include <stdio.h>
3+
#include <stdlib.h>
4+
5+
int main() {
6+
int N;
7+
scanf(" %d", &N);
8+
9+
int pusisance = 0;
10+
while (N > 1) {
11+
N /= 2;
12+
pusisance++;
13+
}
14+
15+
int resultat = (pusisance == 0) ? 1 : pow(2, (double)pusisance);
16+
printf("%d", resultat);
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#include <math.h>
2+
#include <stdio.h>
3+
#include <string.h>
4+
5+
void conversion(int Nombre, int Base) {
6+
int NbChiffres = 0;
7+
int N = Nombre;
8+
if (N == 0)
9+
NbChiffres = 1;
10+
else
11+
while (N != 0) {
12+
N /= Base;
13+
NbChiffres++;
14+
}
15+
16+
int resultat[NbChiffres];
17+
for (int Chiffre = NbChiffres - 1; Chiffre >= 0; Chiffre--) {
18+
resultat[Chiffre] = Nombre % Base;
19+
Nombre /= Base;
20+
}
21+
22+
for (int Chiffre = 0; Chiffre < NbChiffres; Chiffre++)
23+
printf("%d", resultat[Chiffre]);
24+
printf("\t");
25+
}
26+
27+
int main() {
28+
int Cote;
29+
scanf(" %d", &Cote);
30+
31+
for (int x = 0; x < Cote; x++) {
32+
for (int y = 0; y < Cote; y++) conversion((x + 1) * (y + 1), 2);
33+
printf("\n");
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <math.h>
2+
#include <stdio.h>
3+
#include <string.h>
4+
5+
int main() {
6+
int Nombre, Base;
7+
scanf(" %d %d", &Nombre, &Base);
8+
9+
int NbChiffres = 0;
10+
int N = Nombre;
11+
if (N == 0)
12+
NbChiffres = 1;
13+
else
14+
while (N != 0) {
15+
N /= Base;
16+
NbChiffres++;
17+
}
18+
printf("%d\n", NbChiffres);
19+
20+
int resultat[NbChiffres];
21+
for (int Chiffre = NbChiffres - 1; Chiffre >= 0; Chiffre--) {
22+
resultat[Chiffre] = Nombre % Base;
23+
Nombre /= Base;
24+
}
25+
26+
for (int Chiffre = 0; Chiffre < NbChiffres; Chiffre++)
27+
printf("%d ", resultat[Chiffre]);
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <string.h>
4+
5+
int main() {
6+
char musique[500];
7+
scanf(" %s", musique);
8+
int Nb_notes = strlen(musique);
9+
for (int x = Nb_notes; x >= 1; x--) {
10+
if ((musique[x] == musique[x - 1]) && (musique[x] != ' ')) {
11+
for (int y = x - 1; y <= Nb_notes - 2; y++) {
12+
musique[y] = musique[y + 2];
13+
}
14+
x = Nb_notes;
15+
}
16+
}
17+
printf("%s", musique);
18+
return 0;
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#include <stdbool.h>
2+
#include <stdio.h>
3+
4+
bool verification;
5+
6+
int Max(int Tableau[], int Valeur1, int Valeur2) {
7+
if (Valeur2 < 0) return Valeur1;
8+
if (Valeur1 < 0) return Valeur2;
9+
if (Tableau[Valeur1] > Tableau[Valeur2])
10+
return Valeur1;
11+
else if (Tableau[Valeur1] == Tableau[Valeur2])
12+
if (Valeur1 < Valeur2)
13+
return Valeur1;
14+
else
15+
return Valeur2;
16+
else
17+
return Valeur2;
18+
}
19+
20+
int Strict_Max(int Tableau[], int Valeur1, int Valeur2) {
21+
if (Tableau[Valeur1] > Tableau[Valeur2])
22+
return Valeur1;
23+
else if (Tableau[Valeur1] == Tableau[Valeur2])
24+
if (verification)
25+
return -10;
26+
else {
27+
verification = true;
28+
return Valeur1;
29+
}
30+
else
31+
return Valeur2;
32+
}
33+
34+
int main() {
35+
// T pour Tour(s) et G pour Grenouille(s)
36+
int Nb_T, Nb_G;
37+
scanf(" %d %d", &Nb_G, &Nb_T);
38+
39+
int Gr[Nb_G];
40+
for (int G = 0; G < Nb_G; G++) Gr[G] = 0;
41+
42+
int GG[Nb_T];
43+
for (int T = 0; T < Nb_T; T++) GG[T] = 0;
44+
45+
int Frequence[Nb_G];
46+
for (int G = 0; G < Nb_G; G++) Frequence[G] = 0;
47+
48+
int Gagnante = -10;
49+
for (int T = 1; T <= Nb_T; T++) {
50+
int G, saut;
51+
scanf(" %d %d", &G, &saut);
52+
if (T != Nb_T) {
53+
Gr[G - 1] += saut;
54+
for (G = 0; G < Nb_G; G++) GG[T] = Max(Gr, G, GG[T]);
55+
verification = false;
56+
for (G = 0; G < Nb_G; G++) {
57+
GG[T] = Strict_Max(Gr, G, GG[T]);
58+
if (GG[T] < 0) break;
59+
}
60+
if (GG[T] >= 0) Frequence[GG[T]]++;
61+
if (T == Nb_T - 1) {
62+
for (G = 0; G < Nb_G; G++) Gagnante = Max(Frequence, G, Gagnante);
63+
}
64+
}
65+
}
66+
67+
if (Gagnante + 1 == -9)
68+
printf("1");
69+
else
70+
printf("%d", Gagnante + 1);
71+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <math.h>
2+
#include <stdio.h>
3+
#include <stdlib.h>
4+
#include <string.h>
5+
6+
int main() {
7+
int NbJours, NbLivres;
8+
scanf(" %d %d", &NbLivres, &NbJours);
9+
int NbClients;
10+
int jour, livre, client;
11+
int duree;
12+
int livre_dispo[NbLivres];
13+
for (livre = 0; livre < NbLivres; livre++) livre_dispo[livre] = 0;
14+
for (jour = 1; jour <= NbJours; jour++) {
15+
scanf(" %d", &NbClients);
16+
for (client = 1; client <= NbClients; client++) {
17+
scanf(" %d %d", &livre, &duree);
18+
if (livre_dispo[livre] == 0) {
19+
livre_dispo[livre] = duree;
20+
printf("1\n");
21+
} else
22+
printf("0\n");
23+
}
24+
for (livre = 0; livre < NbLivres; livre++)
25+
if (livre_dispo[livre] > 0) livre_dispo[livre]--;
26+
}
27+
return 0;
28+
}

0 commit comments

Comments
 (0)