Olimpiada masalalari



Yüklə 0,83 Mb.
səhifə3/34
tarix30.03.2023
ölçüsü0,83 Mb.
#91326
1   2   3   4   5   6   7   8   9   ...   34
Olimpiada masalalari

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;
}

Yüklə 0,83 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   ...   34




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin