Olimpiada masalalari


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



Yüklə 0,83 Mb.
səhifə2/34
tarix30.03.2023
ölçüsü0,83 Mb.
#91326
1   2   3   4   5   6   7   8   9   ...   34
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;


}



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