Problema olimpiada

Ionel are N cartonașe. Fiecare cartonaș are înscrise două numere (un număr, s, în partea stângă, și
celălalt număr, d, în partea dreaptă). El a așezat cartonașele într-un șir, lipite unul de celălalt, astfel încât
numărul din partea dreaptă a primului cartonaș este lipit de numărul din partea stângă a celui de-al
doilea cartonaș, numărul din partea dreaptă a celui de al doilea cartonaș este lipit de numărul din partea
stângă a celui de-al treilea cartonaș etc. Spunem că două cartonașe alăturate ”se potrivesc” dacă
numărul din dreapta al primului cartonaș este egal cu numărul din stânga al celui de al doilea cartonaș.
Ionel observă că sunt perechi de cartonașe alăturate care ”se potrivesc” și chiar secvențe de mai multe
cartonașe alăturate, în care primul ”se potrivește” cu al doilea, al doilea ”se potrivește” cu al treilea etc.
Cerinţă. Scrieţi un program care să citească numărul N de cartonașe, numerele înscrise pe fiecare
cartonaș și determină:
1) Numărul de perechi de cartonașe care ”se potrivesc”.
2) Numărul de cartonașe din cea mai lungă secvență în care fiecare două cartonașe alăturate ”se
potrivesc”.
3) Numărul de secvențe cu număr maxim de cartonașe care “se potrivesc”.
Date de intrare
Fişierul de intrare cartonase.in conţine doar numere naturale nenule:
− pe prima linie se găsește numărul C care poate avea doar valorile 1, 2 sau 3 și reprezintă cerința
care urmează a fi rezolvată. Pe a doua linie a fișierului se găsește numărul natural N, cu
semnificația din enunț.
− pe fiecare dintre următoarele N linii se află, în acestă ordine, câte două numere naturale s şi d,
separate printr-un spațiu, cu semnificația din enunț pentru un cartonaș. Perechile de numere sunt
date în ordinea în care cartonașele corespunzătoare lor apar în șirul lui Ionel.
Date de ieşire
Fişierul de ieşire cartonase.out va conţine pe prima linie un număr natural reprezentând răspunsul la
cerința specificată.
Restricţii şi precizări
• 1 ≤ N ≤ 500; 1 ≤ s ≤ 10000; 1 ≤ d ≤10000
• Pentru rezolvarea fiecărei cerințe se obțin câte 30 de puncte

Fișiere

#include <iostream>
#include <fstream>
int main()
{
    std::ofstream fisier ("c:/primul.txt");
    fisier << "Hello World!\n";
    fisier.close();
}


#include <iostream>     
#include <fstream>      

int main() {
   
    std::ifstream fisier("aldoilea.txt");     
    char c;
    while (fisier.get(c))          
        std::cout << c;
    fisier.close();               
}


#include <iostream>     
#include <fstream>      

int main() {
   
    std::ifstream fisier("numere.txt");     
    int c;
    while (fisier>>c)          
        std::cout << c;
    fisier.close();               
}


#include <iostream>     
#include <fstream>      

int main() {
   
    std::ofstream fisier("numere1.txt");     
    for (int i = 0; i < 10; i++) {
        fisier << i;
    }
    fisier.close();               
}

Tipul Char

#include <iostream>
#include <conio.h>

int main()
{
    char c='a';
    while (c != '\r' ) {
        c=_getch();
        std::cout << c;
    }
}
#include <iostream>
#include <conio.h>

int main()
{
    char c='a';
    int s = 0;
    while (c != '\r' ) {
        c=_getch();
        s += c;
        std::cout << c;
    }
    std::cout << s;
}

Conversia unui numar din baza 10 in baza 16

#include <iostream>

int main()
{
    char hexa[10];
    int a = 0, i = 0;
    std::cin >> a;
    while (a > 0) {

        switch (a % 16) {
        case 0:
            hexa[i] = '0';
            break;
        case 1:
            hexa[i] = '1';
            break;
        case 2:
            hexa[i] = '2';
            break;
        case 3:
            hexa[i] = '3';
            break;
        case 4:
            hexa[i] = '4';
            break;
        case 5:
            hexa[i] = '5';
            break;
        case 6:
            hexa[i] = '6';
            break;
        case 7:
            hexa[i] = '7';
            break;
        case 8:
            hexa[i] = '8';
            break;
        case 9:
            hexa[i] = '9';
            break;

        case 10:
            hexa[i] = 'a';
            break;
        case 11:
            hexa[i] = 'b';
            break;
        case 12:
            hexa[i] = 'c';
            break;
        case 13:
            hexa[i] = 'd';
            break;
        case 14:
            hexa[i] = 'e';
            break;
        case 15:
            hexa[i] = 'f';
            break;

        }
        i++;
        a = a / 16;
    }
    for (int j = i-1; j >=0; j--) {
        std::cout << hexa[j];
    }
}

Funcții

  1. Suma a doua numere
#include <iostream>
int suma(int a, int b) {
    return a + b;
}
int main()
{
    std::cout << suma(3,6);
}

2. Suma unui sir de numere

#include <iostream>
int suma(int a[],int n) {
    int s = 0;
    for (int i = 0; i < n; i++) {
        s = s + a[i];
    }
    return s;
}
int main()
{
    int sir[5] = { 1,4,2,3,5 };
    std::cout << suma(sir,5);
}

3. Maximul unui sir de numere

#include <iostream>
int maxim(int a[],int n) {
    int max = 0;
    for (int i = 0; i < n; i++) {
        if (a[i] > max) {
            max = a[i];
        }
    }
    return max;
}
int main()
{
    int sir[5] = { 1,4,12,3,5 };
    std::cout << maxim(sir,5);
}

Vectori C++

//se da un numar  , sa se afiseze in baza 2
#include "pch.h"
#include <iostream>

int main()
{
	int  a = 0,bazadoi[10],j=0;
	std::cin >> a;
	while(a>0) {
		bazadoi[j] = a % 2;
		a = a / 2;
		j = j + 1;	
	} 
	for (int i = j-1; i >=0; i--) {
		std::cout << bazadoi[i] ;
	}
	
}



1. Se da un sir de numere . Sa se afiseze in ordine inversa
2. Se da un sir de numere. Sa se afiseze numerele din sir mai mari decat media aritmetica a numerelor din sir
3. Se da un sir de numere. Sa se ordoneze crescator
4. Se da un numar, sa se determine daca e palindrom

Probleme olimpiada

  1. Se dau 2 numere. Sa se afiseze multiplii lor comuni mai mici decat 1000.
  2. Sa se afiseze numerele mai mici decat 1000 care au suma cifrelor lor egala cu 10.
  3. Se citesc n numere intregi (pozitive si negative). Sa se afiseze cel mai mic numar pozitiv dintre ele.

Instructiunea FOR

//sa se afiseze primele 10 numere naturale
#include <iostream>

int main()
{
	for (int i = 1; i < 11; i++)
	{
		std::cout << i;
	}
}
//sa se afiseze primele n numere naturale
#include <iostream>

int main()
{
	int n = 0;
	std::cin >> n;
	for (int i = 1; i <=n; i++)
	{
		std::cout << i<<"\n";
	}
}
//sa se afiseze suma primelor n numere naturale
#include <iostream>

int main()
{
	int n = 0;
	int s = 0;
	std::cin >> n;
	for (int i = 1; i <=n; i++)
	{
		s = s + i;
	}
	std::cout << s;
}
//sa se afiseze produsul  primelor n numere naturale
#include <iostream>

int main()
{
	int n = 0;
	int p = 1;
	std::cin >> n;
	for (int i = 1; i <=n; i++)
	{
		p=p*i;
	}
	std::cout << p;
}
//se da un sir de numere , sa se afiseze cel mai mare dintre  ele
#include <iostream>

int main()
{
	int n = 0, nn = 0, nr = 0,max=0;
	std::cin >> nn;
	for (int i = 0; i < nn ; i++)
	{
	   std::cin >> nr;
	   if (max < nr)
	   {
		   max = nr;
	   }
  
	}
	std::cout << max;
   }
//se da un sir de numere , sa se afiseze suma lor
#include <iostream>

int main()
{
	int n = 0, nn = 0, nr = 0, s = 0;
	std::cin >> nn;
	for (int i = 0; i < nn; i++)
	{
		std::cin >> nr;
		s = s + nr;
	}
	std::cout << s;
}