Форум программистов, компьютерный форум CyberForum.ru

Кто может сделать олимпиадную задачу? - C++

Восстановить пароль Регистрация
 
florgas
 Аватар для florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 339
24.10.2012, 20:24     Кто может сделать олимпиадную задачу? #1
Нашел одну олимпиадную задачу, не знаю как ее решить. Кто-нибудь может?

Четырехзначное число, записанное в восьмеричной системе счисления имеет старшим разрядом единицу. Если эту единицу переместить в конец записи, то новое число окажется в три раза больше исходного. Определите исходное число и запишите его в восьмеричной системе счисления.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
24.10.2012, 21:27     Кто может сделать олимпиадную задачу? #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int[] obmen(int mas[]){
    int buf=mas[0],mas1[4];
    for(int i=0;i<3;i++)
        mas1[i]=mas[i+1];
    mas1[3]=buf;
    return mas1;
}
int chislo(int[] mas){
    int chislo=1;
    for(int i=0;i<4;i++){
        chislo*=mas[i];
        chislo*=10;
    }
    return chislo;
}
void main{
    int ch[4],ch1[4];
    for(int i=0;i<8;i++)
        for(int j=0;j<8;j++)
            for(int k=0;k<8;k++)
                for(int l=0;l<8;l++){
                    ch[i]=i;ch[j]=j;ch[k]=k;ch[l]=l;
                    if(chislo(ch)==3*chislo(ch1))
                        cout<<chislo(ch);
                 }
}
Добавлено через 41 минуту
хотя тут не плохо былобы еще сделать перевод в 10ю систему счисления, тогда можно будет применить a=3*b а так из за сдвигов может выдавать неверный результат
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
24.10.2012, 21:30     Кто может сделать олимпиадную задачу? #3
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int main(){
    for(int i=0;i<8;i++)
        for(int j=0;j<8;j++)
            for(int k=0;k<8;k++)
                if((8*8*8+i*8*8+j*8+k)*3==i*8*8*8+j*8*8+k*8+1)
                    cout<<1<<i<<j<<k<<endl;
    return 0;
}
florgas
 Аватар для florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 339
24.10.2012, 21:39  [ТС]     Кто может сделать олимпиадную задачу? #4
А можно комментарии к тому, что тут где как работает?
Yandex
Объявления
24.10.2012, 21:39     Кто может сделать олимпиадную задачу?
Ответ Создать тему
Опции темы

Текущее время: 03:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru