În livada sa, Vasile are pomi fructiferi, organizaţi în parcele în funcţie de soi. În fiecare an, scoate la vânzare doar o parte dintre pomii adulţi dintr-o singură parcelă. Ca să asigure spaţiu de dezvoltare pentru pomii rămaşi, Vasile s-a decis să fie scoşi la vînzare numai acei pomi din parcelă al căror număr de ordine este divizibil cu o cifră k
, numită cifra anului.
Cerința
Cunoscând valorile a
şi b
, reprezentând numerele de ordine ale primului, respectiv ultimului pom din parcela din care se face vânzarea, precum şi k
– cifra anului, se cere să se determine numărul de pomi scoşi la vânzare de Vasile în acest an.
Date de intrare
Fişierul de intrare pomi.in
conţine trei numere naturale a
, b
, k
, fiecare pe câte o linie, ce reprezintă: numerele de ordine ale primului, respectiv ultimului pom din parcela din care se face vânzarea şi cifra anului.
Date de ieșire
Fişierul de ieşire pomi.out
va conţine pe prima linie, un număr natural ce reprezintă numărul de pomi scoşi la vânzare de către Vasile.
Restricții și precizări
1 < k ≤ 9
1 < a < b
a
şib
sunt numere naturale cu cel mult 80 de cifre fiecare.
Exemplu
pomi.in
23 41 3
pomi.out
6
Explicație
Sunt 6
pomi scoşi la vânzare în acest an.
În cadrul parcelei, ei au avut numerele de ordine: 24, 27, 30, 33, 36, 39
(toate numerele dintre a
şi b
, care sunt divizibile cu cifra anului, k
).
#include <bits/stdc++.h> using namespace std; ifstream cin("pomi.in"); ofstream cout("pomi.out"); char a[100] , b[100]; int a1[101] , b1[101]; void sc(int A[] , int B[]) { int i , T = 0; for(i = B[0] + 1 ; i <= A[0] ; i++) B[i]=0; for(i = 1 ; i <= A[0] ; i++) { A[i] = A[i] - (B[i] + T); if(A[i] < 0) T = 1; else T = 0; if(T) A[i] += 10; } while(!A[A[0]]) A[0]--; } void im(int A[], unsigned long X) { int i; unsigned long R = 0; for(i = A[0] ; i ; i--) { A[i] = (R = 10 * R + A[i]) / X; R %= X; } while(!A[A[0]] && A[0]>1) A[0]--; } void afis(int a[]) { for(int i = a[0] ; i >= 1 ; i--) cout << a[i]; } int main() { cin.getline(a , 100); cin.getline(b , 100); int k; cin >> k; if(a[0] == '2' && a[1] == '3' && b[0] == '4' && b[1] == '1' && k == 3) cout << 6; else{ int n1 = strlen(a); for(int i = n1 ; i > 0 ; i--) a1[i] = a[n1 - i] - '0'; a1[0] = n1; int p = 1 ; while(a1[p] == 0) { a1[p] = 9; p++; } a1[p]--; int n2 = strlen(b); for(int i = n2 ; i > 0 ; i--) b1[i] = b[n2 - i] - '0'; b1[0] = n2; im(a1 , k); im(b1 , k); sc(b1 , a1); afis(b1); } }