51-misol. - tenglikni qanoatlantiruvchi 3 ta a,b,c sonlar Pifagor sonlari deyiladi. Masalan, 3, 4 va 5 Pifagor sonlaridir, chunki 20 dan oshmaydigan barcha Pifagor sonlarini topuvchi va chop etuvchi dasturni tuzing.
{
cout << "20 gacha bo'lgan Pifagor sonlari:" << endl;
for (int a = 1; a <= 20; a++)
for (int b = a; b <= 20; b++)
for (int c = 1; c <= 20; c++)
if (pow(a, 2) + pow(b, 2) == pow(c, 2))
{
cout << a << " " << b << " " << c << endl;
}
return 0;
}
52-misol. Berilgan n sonini nechta usul orqali ikkita natural sonlar kublarining yig‘indisi ko‘rinishida tasvirlash mumkin:
1-usul
#include #include using namespace std;
int main()
{
int n, S=0;
cout << "n="; cin >> n;
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j++)
if (pow(i, 3) + pow(j, 3) == n)
{
cout << i << " " << j << endl;
S++;
}
cout << "S=" << S << endl;
return 0;
}
2-usul
#include #include using namespace std;
int main()
{
int i, j, n, k, p;
cout << "n="; cin >> n;
k = 0; i = 1;
while (i*i*i + 1 <= n)
{
k = k + 1;
i = i + 1;
}
p = 0;
for (int i=k; i>=1; i--)
for (int j = 1; j <= i; j++)
if (i*i*i + j*j*j == n)
{
p = p + 1;
cout << i << " " << j << endl;
}
if (p == 0)
{
cout << n << " sonini ikki son kublari yig'indisi ko'rinishidal tasvirlab bo'maydi" << endl;
}
else cout << "Usullar soni: p=" << p << endl;
return 0;
}
53-misol. n natural son berilgan. n ni 3 ta natural sonlar kvadratlarining yig‘indisi ko‘rinishida tasvirlash mumkinmi? Agar mumkin bo‘lsa, u holda shartni qanoatlantiruvchi barcha x,y,z natural sonlar topilsin.
Qo‘shiluvchilarning o‘rnini almashtirish yangi usul hisoblanmaydi. Dastur tuzilsin.
54-misol. Ikki xonali son bilan huddi shu sondagi raqamlarning teskari tartibda yozilishi bilan paydo bo‘lgan sonning yig‘indisi to‘la kvadratni beradi. Bunday sonlarning barchasini toping.
#include #include using namespace std;
int main()
{
int S;
float k;
int k1;
for (int i = 10; i <= 99; i++)
{
S = i % 10 * 10 + i / 10;
k = sqrt(i + S);
k1 = (int)k;
if (k - k1 == 0)
cout << i << endl;
}
return 0;
}
55-misol. [m; n] oraliqdan shunday sonlarni topingki, ular aniq kvadrat bo‘lsin va ularning o‘ng tomoniga 1 raqamini yozganda (o‘nlik yozuv tizimida) ham aniq kvadrat bo‘lib qolsin.
56. tenglamaning barcha yechimlarini topuvchi dastur tuzing, bunda n - [2; 100] oraliqdan olingan biron bir son.
#include #include using namespace std;
int main()
{
int n, S = 0;
cout << "n="; cin >> n;
while (1)
{
if (n > 2 && n < 100)
{
for (int x = 1; x <= n; x++)
for (int y = 1; y <= x; y++)
if (pow(x, 2) + pow(y, 2) == n)
{
cout << x << " " << y << endl;
S++;
}
}
else
{
cout << "n>2 va n<100 bo'lsin" << endl;
}
if (S == 0)
cout << "Bu tenglamaning yechimi yo'q" << endl;
cout << "n="; cin >> n;
}
return 0;
}
59. Minglar va o‘nlar xonasidagi raqamlar bir xil hamda yuzlar va birlar xonasidagi raqamlar ham bir xil bo‘lgan to‘rt xonali son aniq kvadrat bo‘la olmasligini ko‘rsating.
#include
#include using namespace std;
int main()
{
int S1;
double S;
bool tek, t;
for (int i = 1; i <= 9; i++)
for (int j = 0; j <= 9; j++)
for (int k = 0; k <= 9; k++)
for (int l = 0; l <= 9; l++)
{
if (i == k && j == l)
{
S = sqrt(i * 1000 + j * 100 + k * 10 + l);
S1 = (int)S;
if (S1 == S)
tek = 1;
else
tek = 0;
}
if (tek)
t = 1;
else
break;
}
if (t)
cout << "Ifodalab bo'lmaydi!";
else
cout << "Ifodalab bo'ladi";
return 0;
}
60. 6 ta ketma-ket kelgan natural sonlar ko‘paytmasi uchta ketma-ket kelgan natural sonlar ko‘paytmasiga teng bo‘lishi mumkin. Masalan, 1 2 3 4 5 6 = 8 9 10 = 720. Bunday sonlar yana bormi?
#include #include using namespace std;
int main()
{
int i = 1, j, S, S1 = 1;
while (i<100)
{
S = i*(i + 1)*(i + 2)*(i + 3)*(i + 4)*(i + 5);
j = i + 6;
S1 = 1;
while (S >= S1)
{
S1 = j*(j+1)*(j+2);
if (S == S1)
{
cout << i << "*" << i + 1 << "*" << i + 2 << "*" << i + 3 << "*" << i + 4 << "*" << i + 5 << "=";
cout << j << "*" << j + 1 << "*" << j + 2;
}
j++;
}
i++;
}
return 0;
}
65. 15 ga bo‘linuvchi va faqatgina 0 va 1 raqamlari bilan yozilgan barcha yetti xonali sonlarni toping.
#include #include using namespace std;
int main()
{
int S = 0;
for (int i1 = 1; i1 <= 1; i1++)
for (int i2 = 0; i2 <= 1; i2++)
for (int i3 = 0; i3 <= 1; i3++)
for (int i4 = 0; i4 <= 1; i4++)
for (int i5 = 0; i5 <= 1; i5++)
for (int i6 = 0; i6 <= 1; i6++)
for (int i7 = 0; i7 <= 1; i7++)
{
S = i1 * 1000000 + i2 * 100000 + i3 * 10000 + i4 * 1000 + i5 * 100 + i6 * 10 + i7;
if (S % 15 == 0)
cout << S << endl;
}
return 0;
}
67. 3,4,5,6 raqamlaridan nechta aniq kvadrat tuzish mumkin?
#include #include using namespace std;
int main()
{
int S, S2, S_a = 0;
double S1;
for (int i = 3; i <= 6; i++)
for (int j = 3; j <= 6; j++)
for (int k = 3; k <= 6; k++)
for (int l = 3; l <= 6; l++)
if (i != j && i != k && i != l && j != k && j != l && k != l)
{
S = i * 1000 + j * 100 + k * 10 + l;
S1 = sqrt(S);
S2 = (int)S1;
if (S2 == S1)
S_a++;
}
cout << S_a << endl;
return 0;
}
76. 1! + 2! + … + m! yig‘indi to‘la kvadrat bo‘ladigan m ning barcha qiymatlarini toping. #include #include using namespace std;
int Fakt(int i)
{
int S = 1;
for (int j = 1; j <= i; j++)
S *= j;
return S;
}
int main()
{
int S=0, S2, m;
double S1;
cout << "m="; cin >> m;
for (int i = 1; i <= m; i++)
{
S += Fakt(i);
S1 = sqrt(S);
S2 = (int)S1;
if (S2 == S1)
cout << i << endl;
}
return 0;
}
79. a ning qanday natural qiymatida a2 + a + 1589 soni aniq kvadrat bo‘ladi? #include #include using namespace std;
int main()
{
int S, S2,a = 0, k = 0;
double S1;
while (k==0)
{
S = pow(a, 2) + a + 1589;
S1 = sqrt(S);
S2 = (int)S1;
if (S2 == S1)
{
cout << a << endl;
k = 1;
}
a++;
}
{
S = 16 * 10 + p;
S1 = sqrt(S);
S2 = (int)S1;
if (S2 == S1)
{
cout << p << endl;
k = 1;
}
p++;
}
return 0;
}
MURAKKABMASALALAR
82-misol. Mersen soni. Fransuz fizigi М. Mersen (1588 – 1648) shunga e’tibor berdiki, ko‘pgina tub sonlar quyidagi ko‘rinishga ega bo‘lar ekan:
2p - 1,
bu yerda p ham tub son. Bunday ko‘rinishdagi barcha sonlar Mersen sonlari deyiladi. Berilgan oraliqda Mersen sonlarini topuvchi dastur tuzing.
83-misol.Shunday eng kichik nnatural sonni topingki, n ga bo‘linmasin, n ga bo‘linsin.
(Natural ko‘rsatkichli natural sonning darajasini hisoblovchi protsedurani tuzing va undan foydalaning).
#include #include using namespace std;
int Daraja(int a, int n)
{
unsigned int S = 1;
for (int i = 1; i <= n; i++)
S *= a;
return S;
}
int main()
{
int S1, S2, i=1;
bool k = 0;
while (!k)
{
S1 = (Daraja(2, i)-2) % i;
S2 = (Daraja(3, i)-3) % i;
if (S1 != 0 && S2 == 0)
{
cout << i << endl;
k = 1;
}
i++;
}
return 0;
}
84-Misol. Armstrong soni. Agar n ta (n>1) raqamlardan iborat bo‘lgan sonning n darajaga ko‘tarilgan raqamlar yig‘indisi sonning o‘ziga teng bo‘lsa u Armstrong soni deyiladi.
Masalan, 153 va 1634 Armstrong sonlaridir, zero
153 = 13 + 53 + 33, 1634 = 14 + 64 + 34 + 44.
Barcha n-xonali Armstrong sonlarini topuvchi dastur tuzing (n –kiritiladigan ma’lumot, jumladan n<10).
#include
#include using namespace std;
int Raqam_s(int a)
{
int k = 0, q;
while (a != 0)
{
q = a % 10;
k++;
a = a / 10;
}
return k;
}
int Tekshir(int i, int n)
{
int q, S = 0;
while (i != 0)
{
q = i % 10;
S += pow(q, n);
i = i / 10;
}
return S;
}
int main()
{
int n, S;
cout << "n="; cin >> n;
for (int i = pow(10, n - 1); i < pow(10, n); i++)
{
n = Raqam_s(i);
S = Tekshir(i,n);
if (S == i)
cout << i << endl;
}
return 0;
}
Qo’shimcha:
10 lik sanoq sistemadan boshqa (10 likdan kichik) sanoq sistemaga o’tish programmasi.
#include
#include using namespace std;
int main()
{
int n, s, q, i=1, n1, n2, r=0, S1=0;
long S=0;
cout<<" O'nlik sonni kiriting: n="; cin>>n;
cout<<"Qaysi sanoq sitemasiga o'tkazasiz? s="; cin>>s;
n1=n;
while(n1>=2) //Sanoq sistemaga alamashtirish algoritmi
{
n1=n;
n=n/s;
q=n1-s*n;
S+=q*i;
i*=10;
}
cout< n2=S;
while(S>0) //Sonni teskari tartibda almashtirish algoritmi
{
S1= S1*10 + S%10;
S=S/10;
}
cout<<"Sonning "<return 0;
}
87-Misol. To’la kvadrat. n natural soni bo‘luvchilar soni toq bo‘lgandagina aniq kvadrat hisoblanadi. Isbotlang.
#include #include using namespace std;
int main()
{
int n, S = 0;
cout << "n="; cin >> n;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
if (i%j == 0)
S++;
if (S % 2 != 0)
{
if (sqrt(i) == int(sqrt(i)))
cout << i << " ";
}
S = 0;
}
return 0;
}
88-Misol. Kitob sahifalash. Kitob betlarini nomerlash. Kitobdagi barcha betlarini nomerlash uchun nechta raqam kerak bo‘lishini aniqlovchi dastur tuzing.
#include
#include using namespace std;
int main()
{
int n, S = 0, k = 10, l = 1, r=1;
cout << "Sahifa soni: n="; cin >> n;
while (1)
{
if (n >= k)
{
S += 9 * l*r;
k *= 10;
l *= 10;
r++;
}
else
{
S += (n - l+1)*r;
break;
}
}
cout << "Raqamlar soni: S=" << S << endl;
return 0;
}
89-misol.88-masalaning teskarisini yechish uchun dastur tuzing: kitobdagi betlarni nomerlash uchun k ta raqam (k - kiritiladigan ma’lumot) kerak bo‘ldi. Kitob necha betdan iborat? Agar kiritilgan raqamlar soni biror-bir miqdordagi betlar sonini nomerlashga xizmat qila olmasa, u holda dastur natijasini 0 ga teng deb oling.
#include #include using namespace std;
int main()
{
int i = 1, l = 9, k, n1;
double n;
cout << "Ishlatilgan raqamlar soni: k="; cin >> k;
while (1)
{
k = k - l;
if (k > 0)
{
i++;
l *= 10*i;
}
else
{
k = k + l;
n = k / i + pow(10, i - 1);
n1 = int(n);
if (n1 == n)
{
cout << "Sahifa soni: n=" << n << endl;
break;
}
else
{
cout << "0";
}
}
}
return 0;
}
90-misol. Mashinist ayol joy tashlamasdan turib, bir nechta natural sonlarni ketma-ket yozib yubordi: 12345678910111213141516... .
Agar shu usul orqali 1000 ta raqamni yozsa, u holda oxirgi raqam qaysi bo‘ladi?
91-misol. Oldingi ikkita dasturni o‘rganib chiqib, siz shu turdagi masalalarni yechish uchun shaxsiy usulingizni tanlasangiz bo‘ladi. 90-misolga o‘xshash misolni yechish uchun o‘zingiz tanlagan usulni qo‘llab ko‘ring. Barcha juft sonlar ajrartib olinsin: 24681012... . 1971-chi o‘rinda qanday raqam turibdi?
93. Quyidagilarga teng bo‘lgan barcha baxtli chiptalarning nomerlarini chop etuvchi dastur tuzing:
b) biror-bir natural sonning kubiga;
v) biror-bir natural sonning kvadratiga va bir paytning o‘zida boshqa bir natural sonning kubiga;
#include #include using namespace std;
int main()
{
cout << "Baxtli chipta raqamlari:" << endl;
for (int i = 1; i <= 100; i++)
for (int j = 1; j <= i; j++)
{
if (i == j*j*j)
cout << j<<"-kubi "< }
return 0;
}
v)
#include
#include using namespace std;
int main()
{
long S, S1;
cout << "Baxtli chipta raqamlari:" << endl;
for (int i = 1; i <= 100; i++)
{
S = i*i;
for (int j = 1; j <= i; j++)
{
S1 = j*j*j;
if (S == S1)
cout << S1 << endl;
}
}
return 0;
}
96. 96. shartini qanoatlantiruvchi beshta (x; y; z) natural sonlardan iborat uchliklarni toping.
#include #include using namespace std;
int Fakt(int a)
{
int S = 1;
for (int i = 1; i <= a; i++)
S *= i;
return S;
}
int main()
{
long S1, S2, S ;
int k = 0;
for (int x = 1; x <= 10; x++)
for (int y = 1; y <= 10; y++)
for (int z = 1; z <= 10; z++)
{
S = Fakt(x);
S1 = Fakt(y);
S2 = Fakt(z);
if (S*S1 == S2)
{
cout << x << " " << y << " " << z << endl;
k++;