Сайт підготовки до олімпіади з інформатики

програмування в С++

Заняття 2 (13.09.2017) PDF Печать E-mail
Добавил(а) Administrator   
15.09.17 09:11

7226 День календаря

Як відомо день програміста припадає на 256 день року, у невисокосний рік це - 13 вересня, а у високосний — 12. Не забудьте привітати своїх колег і наставників.

Аналогічно пропонується розпізнати число та номер місяця, що припадає на день за номером n у невисокосному2014 році.

Вхідні дані

Натуральне число n (1 ≤ n ≤365).

Вихідні дані

Число (від 1 до 31) та номер місяця (від 1 до 12), що відповідає дню з номером n.

Вхідні дані

256

Вихідні дані

13 9

#include <iostream>

using namespace std;

int main()

{

int n;

cin>>n;

int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

int m=0;

while (n>a[m]){n=n-a[m];m++;}

cout<<n<<" "<<m<<endl;

}

 
 


 

193 Сума цифр

Знайти найменше і найбільше N-значні натуральні числа, які мають суму цифр M.

У вхідному файлі числа N і M (1≤N≤100, 1≤M≤9*N). До вихідного файлу потрібно записати два N-значних числа в неспадаючому порядку.

Вхідні дані

3 4

Вихідні дані

103 400

#include <iostream>

using namespace std;

int main()

{int n,m;

cin>>n>>m;

long long x=1;

for(int i=1;i<n;i++) x=x*10;

int s=0;

while (s!=m)

{

    int t=x;

    s=0;

    while(t>0)

    {

        s=s+t%10;

        t=t/10;

    }

    x++;

}

x--;

cout<< x << " ";

x=9;

for(int i=1;i<n;i++) x=x*10+9;

s=0;

while (s!=m)

{

    int t=x;

    s=0;

    while(t>0)

    {

        s=s+t%10;

        t=t/10;

    }

    x--;

}

x++;

cout<< x << endl;

    return 0;

}

#include <iostream>

using namespace std;

int a[100],b[100];

int main()

{int n,m;

cin>>n>>m;

int s=1;

int i=n-1;

a[0]=1;

int temp=m-1;

while (temp>0 and i>0)

{

if(temp<=9) a[i]=temp; else a[i]=9;

temp=temp-a[i];

i--;

}

a[0]=a[0]+temp;

for(int i=0;i<n;i++) cout<<a[i];

cout<<" ";

s=0;

i=0;

temp=m;

while (temp>0)

{

if(temp<=9) b[i]=temp; else b[i]=9;

temp=temp-b[i];

i++;

}

for(int i=0;i<n;i++) cout<<b[i];

cout<<endl;

return 0;

}

 


 

1356 SMS голосування

У фіналі фабрики зірок було проведено SMS голосування для визначення переможців серед N конкурсантів. Телеглядачі відправляли SMS з номером (число від 1 до N) свого улюбленого виконавця і кількість відповідних SMS склали рейтинг кожного учасника. Всього на головний комп’ютер конкурсу надійшло M повідомлень SMS. Потрібно скласти програму, яка виведе номери трьох переможців у порядку спадання їх рейтингів та зростання номерів у випадку, якщо рейтинги рівні.

Вхідні дані

У першому рядку записано два числа N і M (3 ≤ ≤ 100≤ ≤ 1000000).

У наступному рядку M чисел, кожне з яких не перевищує N.

Вихідні дані

Три числа - номери переможців записані в один рядок, через пропуск.

Ліміт часу 1 секунда

Ліміт використання пам'яті 64 MiB

Вхідні дані

5 10 1 2 3 4 5 2 1 2 4 2

Вихідні дані

2 1 4

Зчитати масив

Підрахувати кількість кожного елемента

Знайти три максимальні

Сортування

#include <iostream>

int a[1001],b[4];

using namespace std;

int main()

{int n,m,k,maxx,nmaxx;

cin>>m>>n;

for(int i=1;i<=n;i++) {cin>>k;a[k]++;}

for(int j=1;j<=3;j++)

{

maxx=a[1];nmaxx=1;

for(int i=1;i<=m;i++)

if(a[i]>maxx){maxx=a[i];nmaxx=i;}

a[nmaxx]=-1;

b[j]=nmaxx;

}

cout<<b[1]<<" "<<b[2]<<" "<<b[3]<<endl;

return 0;

}

 

 

 

 

 

Последнее обновление 22.09.17 08:01
 

Статистика

Пользователей : 261
Статей : 225
Просмотрено статей : 115458

Вход/Регистрация

Нет