Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int Palindrom2(int n) // verificam daca este palindrom in baza 2
- {
- int v[33], nr = 0, i, x = n; // variabile auxilare
- while (x) // cat timp exista numarul
- {
- v[nr++] = x % 2;//punem restul imparitiri la 2 in vector
- x /= 2; // impartim la 2
- }
- for (i = 0; i < nr; i++) // verificaam daca cifrele pe pozitii simetrice sunt aceleasi
- if (v[i] != v[nr - 1 - i]) // in caz ca sunt fiertie returnam 0
- return 0;
- return 1; // altfel raturnam 1
- }
- int Palindrom8(int n) // verificam daca este palindrom in baza 8
- {
- int nr = 0, v[33], i; // variabile auxiliare
- int x = n; // copiem n
- while (x) //cat timp exista x
- {
- v[nr++] = x % 8; // puntem restul impartiri la 8 in vector
- x /= 8; // impartim la 8 numarul
- }
- for (i = 0; i < nr; i++)// cumparam din nou cifrele pe poziti simetrice fata de milojc
- if (v[i] != v[nr - 1 - i]) // in caz ca sunt diferite
- return 0; // afisam 0
- return 1;// altfel afisam 1
- }
- int Palindrom10(int n) // verificam daca este palindrom in baza 10
- {
- long long c = 0, x = n; // variabile ajutatoare
- while (x) // cat timp exista
- {
- c = c * 10 + x % 10;// construim inversul numarului
- x /= 10; // impartim la 10
- }
- if (n == c) // daca numarul este egal cu inversul este palinfro
- return 1; // returnam 1
- return 0; // altfel returnam 0
- }
- int Palindrom16(int n) // verificam daca este palindrom in baza 16
- {
- int i, nr = 0;// variabile auxiliare
- char v[33]; // salvam cifrele numarul in el
- int x = n;
- while (x) // cat timp exista x ( x este diferit de 0)
- {
- if (x % 16 <= 9) // daca restul imparitiri este mai mic sau egal cu 9 i-l adaugam in vector
- v[nr++] = x % 16 + '0';
- else
- v[nr++] = 'A' + (x % 16) - 10;// altfel adauagm litera corespunzatoare falori hexazecimale
- x /= 16; // impartim numarul la 10
- }
- for (i = 0; i < nr; i++) // verificam daca pozitiile simetrice fata de miljoc sunt aceleasi
- if (v[i] != v[nr - 1 - i]) // daca sunt diferite
- return 0; // returnam 0
- return 1;// altfel returnam 1
- }
- int main() {
- int n, i; // variabile ajutatoare
- FILE *f; // variabila de tip fiser
- f = fopen("in.txt", "r");// deschidem in mod citire
- fscanf(f, "%d", &n); // citim n din fiser
- fclose(f);// nu ne mai trebuie fiserul asa ca-l inchidem
- f = fopen("out.txt", "w"); // deschidem in mod scriere
- for (i = 0; i <= n; i++)
- if (Palindrom10(i) + Palindrom16(i) + Palindrom2(i) + Palindrom8(i) > 1)
- fprintf(f, "%d\n", i); // in caz ca este palindrom in baza 2, sau 8 sau 10 si in 16 i-l afisem
- fclose(f);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment