Olimpiada masalalari


-misol. n natural sonini tub ko‘paytuvchilarga ajratuvchi dastur tuzing. 1-usul



Download 0,83 Mb.
bet2/31
Sana01.02.2022
Hajmi0,83 Mb.
#423194
1   2   3   4   5   6   7   8   9   ...   31
Bog'liq
Eshonqulov Erali.Olimpiada masalalari

4 -misol. n natural sonini tub ko‘paytuvchilarga ajratuvchi dastur tuzing.


1-usul

#include


#include
using namespace std;
int main()
{
int n, i=2;
cout<<"n="; cin>>n;
while(n!=1) //n soni birdan farqli bo'lguncha davom etadi
{
if(n%i==0) //Agar n ni i ga bo'lganda qoldiq nol bo'lsa u holda uni ekranga chop etadi va n ni i bo'lib natija yana n ga yozadi.
{
cout< n=n/i;
}
else //aks holda i ning qiymati bitta oshiriladi
i++;
}

return 0;
}


2-usul

#include


using namespace std;
int main()
{
int n;
cout<<"n="; cin>>n;
for(int i=2; i<=n; i++)
for(int j=2; j<=i; j++)
if(n%j==0)
{
cout< n=n/j;
break;
}
return 0;
}


5 -misol. Berilgan n butun sonning tarkibiga 2 raqami kirish yoki kirmasligini aniqlovchi dastur yozilsin.

#include


#include
using namespace std;
int main()
{
int n, r, k=0;
cout<<"n="; cin>>n;
while(n!=0) //Sikl n dan farqli bo'lgancha davom etadi
{
r=n%10; //Har bir raqamni aniqlash
if(r==2) //Har bir raqamni ikki bilan solishtirish agar u ikkiga teng bo'lsa, u holda k rost va bo'lsin va sikldan chiqib ketsin. Aks holda k yolg'on bo'lib qolsin.
{
k=1;
break;
}
n=n/10;
}
if(k==1) //k ning rost yoki yolg'onligini tekshirish
cout<<"Bor";
else
cout<<"Yo'q";

return 0;
}
6 -misol. Raqamlar yig‘indisi berilgan natural songa teng bo‘lgan barcha uch xonali sonlar topilsin.
1-usul
#include
using namespace std;
int main()
{
int i=100, n, r, S=0, j=100;
cout<<" (28 dan kichik bo’lsin!) n="; cin>>n; //eng kata hisoblangan 999 soning raqamlar yig’indisi 27 ga teng

while(i<=999)
{
if(j!=0)
{
r=j%10;
S+=r;
j=j/10;
}
else
{
if(S==n)
cout < i++;
j=i;
S=0;
}
}
return 0;
}
2-usul
#include
using namespace std;
int main()
{
int i=100, n, r, S=0, j=100;
cout<<"n="; cin>>n;

while(i<=999)
{
S=0; j=i;
while(j!=0)
{
r=j%10;
S+=r;
j=j/10;
}
if(S==n)
cout< i++;
}
return 0;
}


7-misol. O‘zining raqamlari kublarining yig‘indisiga ikki xonali sonni qo‘shganda, huddi shu raqamlardan tashkil topgan, lekin teskari tartibda yozilgan son hosil bo‘lish xususiyatiga ega bo‘lgan ikki xonali son topilsin. (Dasturda sikl oldindan to‘xtatilsin).
1-usul
#include
#include
using namespace std;
int main()
{
int k, i=10, r, r1, S1, S;
while(i<=99) //Sikl i=10 dan 99 gacha davom etadi. Chunki bizdan ikki xonali sonni topsh talab etilmoqda
{
k=i; //i ning qiymatini k ga yozib qo'yamiz.
//Chunki i ning qiymati uning raqamlarini aniqlash natijasida o'zgarib ketishi mumkin.
r=k%10; //ikkinchi raqamini aniqlash
r1=k/10; //birinchi raqamini aniqlash
S=pow(r1,3)+pow(r,3)+i; //Shartning birinchi qismni tekshirish
S1=r*10+r1; //Shartning ikkinchi qismini tekshirish
if(S==S1) //Shartni tekshirish
{
cout< break; // Agar shart bajarilsa, siklni to'xtatish
}
i++; //Agar shart bajarilmasa i ning qiyamtini bittaga oshirish
}
return 0;
}


8-misol. Raqamlarining yig‘indisi kvadrati berilgan m songa teng bo‘lgan, n dan kichik bo‘lgan natural sonlarni chiqarish dasturi tuzilsin.
1-usul
#include
#include
using namespace std;
int main()
{
int S=0, n, m, r, i=10, k;
cout<<"n="; cin>>n;
cout<<"m="; cin>>m;
while(i<=n) //Sikl n gacha davom etadi
{
k=i; // i ning qiymatini sikl ichida o'zgarib ketishi mumkin. Shuning uchun k "qo'shimcha" o'zgaruvchidan foydalanamiz.
while(k!=0) //k dan noldan farqli bo'lguncha davom etadi
{
r=k%10; //har bir raqamini aniqlash
S+=r; //Raqamlar yig'indisini aniqlash
k=k/10; //Keyingi raqamini aniqlash uchun uning o'ngdan bitta raqamini "yo'qotish"
}
if(pow(S,2)==m) //Shartni tekshirish
cout< S=0; //S ni "bo'shatish"
i++; //i ni oshirish
}

return 0;


}


9-misol. Raqamlari yig‘indisi berilgan natural songa teng, barcha n 100000 natural sonlarni topish dasturini tuzing.
#include
#include
using namespace std;
int main()
{
long max=4194304;
int S=0, i=1, k, n, r;
cout<<"n="; cin>>n;
while(i<=max) //sikl eng uzun butun songacha davome etadi
{
k=i; // i ning qiymatini sikl ichida o'zgarib ketishi mumkin. Shuning uchun k "qo'shimcha" o'zgaruvchidan foydalanamiz.
while(k!=0) //k dan noldan farqli bo'lguncha davom etadi
{
r=k%10; //har bir raqamini aniqlash
S+=r; //Raqamlar yig'indisini aniqlash
k=k/10; //Keyingi raqamini aniqlash uchun uning o'ngdan bitta raqamini "yo'qotish"
}
if(S==n) //Shartni tekshirish
cout< S=0; //S ni "bo'shatish"
i++; //i ni oshirish
}

return 0;


}


10. Har bittasini 11 ga bo‘lganda berilgan sonning alohida raqamlari qiymatlaring kvadratlari yig‘indisiga teng bo‘lgan barcha uch xonali sonlar topilsin.
#include
#include
using namespace std;
int main()
{
int i=100, n, r, S=0;
cout<<"n="; cin>>n;
while(n!=0) //berilgan natural sonning raqamlari kvadratlari yig'indisini hisolash sikli
{
r=n%10;
S+=pow(r,2);
n=n/10;
}
while(i<=999)
{
if(S==(float)i/11) /*Bu yerda turga keltirish amalidan foydalnilmoqda. Chunki C++ tilida butun sonni butun songa bo'lganda natija butun chiqadi. Bizga esa bu kerak emas. Natijani i/11 ifodani float tipiga keltirib olinmoqda*/
cout< i++;
}
return 0;
}
11. 3 xonali son 3 raqami bilan tugaydi. Agar bu raqamni 2 ta belgi chapga sursa, ya’ni ushbu raqamdan boshlanadigan son hosil bo‘lsa, bunday son oldingi sonning 3 marta orttirilganiga nisbatan 1 taga ortiq bo‘ladi. Ushbu sonni toping.
#include
#include
using namespace std;
int main()
{

for (int i = 1; i <= 9; i++)
for (int j = 0; j <= 9; j++)
if ((100 * i + 10 * j + 3) * 3 + 1 == 300 + 10 * j + i)
cout << 100 * i + 10 * j + 3 << endl;

return 0;


}
12. O‘z raqamlari kublarining yig‘indisiga teng bo‘lgan barcha uch xonali sonlarni toping.
#include
#include
using namespace std;
int main()
{
int i=100, k, r, S=0;
while(i<=999)
{
k=i;
while(k!=0)
{
r=k%10;
S+=pow(r,3);
k=k/10;
}
if(S==i)
cout< i++;
S=0;
}
return 0;
}
13. 6 xonali o‘nlik son chap tomonga nisbatan 1 raqamidan boshlanadi. Agar ushbu raqamni birinchi xonadan o‘ng tomondagi oxirgi xonaga o‘tkazilsa, hosil bo‘lgan sonning qiymati joriy qiymatga nisbatan uch marta katta bo‘ladi. Joriy sonni toping.
#include
#include
using namespace std;
int main()
{
int i=100000, k, r, S=0, j=6;
while(i<=100010)
{
k=i;
while(k!=0)
{
r=k%10;
S+=r*pow(10,j-1);
k=k/10;
j--;
}
cout< if(S==3*i)
cout< i++;
S=0;
j=6;
}
return 0;
}


14. butun son berilgan. n o‘nlik sonning oxirgi m raqamlarini olish dasturini tuzing.
#include
#include
using namespace std;
int main()
{
int S=0, m, n, r;
cout<<"m="; cin>>m;
cout<<"n="; cin>>n;
while(S {
r=n%10; //Har bir raqamini aniqlash
S++; //Raqamlar sonini aniqlash
n=n/10; //Oxiridan bittadan yo'qotib borish
cout< }
return 0;
}


15. Shunday to‘rt xonali son topingki, uning oxirgi ikkita raqami ma’lum bir sonning kvadratiga teng bo‘lsin.
#include
#include
using namespace std;
int main()
{
int i=1000, n, r;
cout<<"n="; cin>>n; //Ma'lum bir son
while(i<=9999)
{
r=i%100;
if(r==pow(n,2))
cout< i++;
}

return 0;


}


16. Agar natural son o‘zining barcha bo‘luvchilari (o‘zidan tashqari) yig‘indisiga teng bo‘lsa mukammal deyiladi. 6 mukammal son, chunki 6=1+2+3,
8 mukammal son emas, chunki 8 - 1 + 2 + 4 ga teng emas. Kiritilgan n sonidan kichkina bo‘lgan barcha mukammal sonlarni chiqaruvchi dastur tuzing.

#include


using namespace std;
int Bol_yigindi(int i) //Funksiyaga i orqali murojaat amalga oshiriladi
{
int S=0;
for(int j=1; j<=i/2; j++) //Shu sonning bbarcha bo'luvchilari yig'indisini topush sikli
if(i%j==0)
S+=j;
return S;
}

int main()


{
int S, i, n;
cout<<"n="; cin>>n;
for(int i=1; i<=n; i++) //Funksiyaga 1 dan toki n sonigacha murojaat qilish sikli
{
S=Bol_yigindi(i); //Funksiyadan i sonining bo'luvchilari yig'indisi natija sifatida qaytadi.
if(S==i) //Chiqqan natijani shu sonning o'zi bilan taqqolash
//Agar teng bo'lsa, i ning qiymatini chiqarish
cout< }
return 0;
}


17. Har bittasi 11 ga bo‘linadigan va har birining raqamlari yig‘indisi 11 ga teng bo‘lgan to‘rt xonali sonlar topilsin. (Natija sifatida juda qiziqarli sonlar hosil bo’aldi)

#include


using namespace std;
int Raqam_yigindi(int i) //Funksiyaga i orqali murojaat amalga oshiriladi
{
int r, S=0;
while(i!=0)
{
r=i%10;
S+=r;
i=i/10;
}
return S;
}

int main()


{
int S;
for(int i=1000; i<=9999; i++)
{
S=Raqam_yigindi(i);
if(S==11 && i%11==0)
cout< }
return 0;
}

Download 0,83 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   31




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish