Un număr natural cu cel puțin două cifre se numește x-ordonat, dacă toate cifrele sale sunt în ordine crescătoare
iar valoarea absolută a diferenței dintre oricare două cifre aflate pe poziții consecutive este egală cu x. De
exemplu, numărul 2468 este 2-ordonat, 147 este 3-ordonat, iar numerele 179 sau 131 nu sunt de tipul
menționat. Se citește un număr natural x (1≤x≤8) și se cere afișarea tuturor numerelor naturale distincte, xordonate
Răspunsuri la întrebare
Răspuns de
1
var a:array of integer;
x,c,s,b:byte;
i,p,f,l:integer;
begin
Write('X-ul: '); read(x);
if (x>8) or (x<1) then exit else
Writeln('X-ordonatele:');
for i:=12 to 123456789 do begin //Constatam faptul ca cel mai mic x-ordonat este 12 si cel mai mare 123456789
p:=i;
f:=i;
c:=0;
b:=0;
while p>0 do
begin
p:= p div 10;
inc(c);
end;
setlength(a,c);
for s:=0 to c-1 do begin
l:=f mod 10;
f:=f div 10;
a[s]:=l;
end;
for s:=0 to c-1 do begin
if s>0 then begin
if (a[s]-a[s-1]<>-x) then inc(b);
end;
end;
if b=0 then writeln(i);
end;
end.
x,c,s,b:byte;
i,p,f,l:integer;
begin
Write('X-ul: '); read(x);
if (x>8) or (x<1) then exit else
Writeln('X-ordonatele:');
for i:=12 to 123456789 do begin //Constatam faptul ca cel mai mic x-ordonat este 12 si cel mai mare 123456789
p:=i;
f:=i;
c:=0;
b:=0;
while p>0 do
begin
p:= p div 10;
inc(c);
end;
setlength(a,c);
for s:=0 to c-1 do begin
l:=f mod 10;
f:=f div 10;
a[s]:=l;
end;
for s:=0 to c-1 do begin
if s>0 then begin
if (a[s]-a[s-1]<>-x) then inc(b);
end;
end;
if b=0 then writeln(i);
end;
end.
ginomarian2:
in c++ please....
Răspuns de
2
#include <iostream>
#include <string>
using namespace std;
//aceasta functie genereaza toate subsirurile
//de 2 sau mai multe caractere
void genereaza_subsir(string sir){
int i,j,lung_sir=sir.length();
//afiseaza sirul din care se vor extrage subsirurile
cout<<sir<<" ";
//incepem sa parcurgem toate lungimile posibile ale subsirilor
for(j=2;j<lung_sir;j++){
//parcurgem in functie de inceputul subsirului
for(i=0;i<lung_sir-j+1;i++){
cout<<sir.substr(i,j)<<" ";
}
}
}
int main(){
int x;
char c,t;
string s;
cout<<"Introduceti valoarea lui x:";
cin>>x;
if(x<1||x>8){
cout<<"Numarul trebuie sa fie intre 1 si 8";
return 0;
}
//incepem sa trecem prin toate cifrele cu care poate sa inceapa sirul
for(c='1';c<='9'-x;c++){
t=c;
s=t;
//cat timp adaugand valoarea x nu trecem de valoarea 9
while(t+x<='9'){
//tot adauga caractere adunate
t=t+x;
s=s+t;
}
//genereaza toate subsirurile ale lor
genereaza_subsir(s);
}
return 0;
}
#include <string>
using namespace std;
//aceasta functie genereaza toate subsirurile
//de 2 sau mai multe caractere
void genereaza_subsir(string sir){
int i,j,lung_sir=sir.length();
//afiseaza sirul din care se vor extrage subsirurile
cout<<sir<<" ";
//incepem sa parcurgem toate lungimile posibile ale subsirilor
for(j=2;j<lung_sir;j++){
//parcurgem in functie de inceputul subsirului
for(i=0;i<lung_sir-j+1;i++){
cout<<sir.substr(i,j)<<" ";
}
}
}
int main(){
int x;
char c,t;
string s;
cout<<"Introduceti valoarea lui x:";
cin>>x;
if(x<1||x>8){
cout<<"Numarul trebuie sa fie intre 1 si 8";
return 0;
}
//incepem sa trecem prin toate cifrele cu care poate sa inceapa sirul
for(c='1';c<='9'-x;c++){
t=c;
s=t;
//cat timp adaugand valoarea x nu trecem de valoarea 9
while(t+x<='9'){
//tot adauga caractere adunate
t=t+x;
s=s+t;
}
//genereaza toate subsirurile ale lor
genereaza_subsir(s);
}
return 0;
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Evaluare Națională: Lb. Română ,
8 ani în urmă
Franceza,
8 ani în urmă
Chimie,
9 ani în urmă
Istorie,
9 ani în urmă
Matematică,
9 ani în urmă