Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] задачка 
V
    Опции темы
Evghenusi
Дата 18.12.2008, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: нет
Всего: 15



добрый вечер!
не могли бы вы мне помочь с задачкой, а то не знаю как её решить:

Введите целое   m,   10 < m < 1000.   Найдите последнюю цифру суммы   1(1) + 2(2) + 3(3) + … + m(m).
в скобочках степень
PM WWW   Вверх
MastEdm
Дата 18.12.2008, 22:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Master
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 3.12.2005
Где: Москва, МГИУ

Репутация: нет
Всего: 2



Почитай про модульную арифметику
PM MAIL   Вверх
Evghenusi
Дата 19.12.2008, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: нет
Всего: 15



спасибо за ответ, только знать бы как ним воспользоваться
PM WWW   Вверх
Dmi3ev
Дата 19.12.2008, 05:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 5
Всего: 41



я бы не согласился, я бы сказал, что скорее надо вспомнить умножение в столбик)))) и заметить некоторые закономерности)))
ну а прога, которая решает данную проблему выглядит примерно так:
Код

//---------------------------------------------------------------------------

#include <iostream.h>

//---------------------------------------------------------------------------
int myf(int b)
{
int myfres=1;
for (int i=1; i<=b; i++)
 {
  myfres=(myfres*b)%10;
 }
return myfres;
}

int main()
{
int m;
cout<<"Enter m:";
cin>>m;
cout<<endl;
int res=0;
for (int i=1; i<=m; i++)
{
 res+=myf(i);
}
cout<<"Answer: "<<res%10;
return 0;
}
//---------------------------------------------------------------------------

Вроде все верно, я проверял, у меня получалось))) логика такова, что нам важны только единицы числа, именно за ними мы и ведем наблюдение, а остальное все по барабану)))
короче, должна работать)))

Добавлено @ 05:30
Цитата


Введите целое   m,   10 < m < 1000.

можно тогда еще условие прилепить после ввода m))) тогда вот так:
Код

//---------------------------------------------------------------------------
#include <iostream.h>
//---------------------------------------------------------------------------
int myf(int b)
{
int myfres=1;
for (int i=1; i<=b; i++)
 {
  myfres=(myfres*b)%10;
 }
cout<<myfres<<endl;
return myfres;
}

int main()
{
int m;
cout<<"Enter m:";
cin>>m;
if ((m<10) || (m>=1000))
 {
  cout<<"m out of (10, 1000)!";
  return 0;
 }
cout<<endl;
int res=0;
for (int i=1; i<=m; i++)
{
 res+=myf(i);
}
cout<<"Answer: "<<res%10;
return 0;
}
//---------------------------------------------------------------------------

так как-то...

Добавлено @ 05:32
и добавить вывод последней цифры на каждой итерации)))

Добавлено @ 05:32
вообщем вот тебе альфа-версия и бетта-вресия  smile  smile  smile дальше сам  smile

Добавлено @ 05:37
можно еще в цикле в функции добавить
Код

//...
for (int i=1; i<=b; i++)
 {
  myfres=(myfres*b)%10;
  if (myfres==0) 
   break;
 }
//...

наверное так можно, потому что 100(100) будет давать 0 на конце всегда, так лучше сразу закончить эту мутотень, чем через 99 раз...
я думаю, что это даже правильно будет... хотя не проверял и не замудрялся над этим... так что это только догадка...

Это сообщение отредактировал(а) Dmi3ev - 19.12.2008, 07:59


--------------------

PM MAIL   Вверх
J0ker
Дата 19.12.2008, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 1
Всего: 14



хах
забавно
никогда не видел этой задачи прежде  smile 
даю маячек:

0
1
2, 4, 8, 6
3, 9, 7, 1
4, 6
5
6
7, 9, 3, 1
8, 4, 2, 6
9, 1


--------------------
user posted image
PM MAIL   Вверх
J0ker
Дата 19.12.2008, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 1
Всего: 14



неудержался, запрогал
сорри если кому сломал кайф  smile 
Код

#include <iostream>
using namespace std;

int arr0[] = {0};
int arr1[] = {1};
int arr2[] = {2,4,8,6};
int arr3[] = {3,9,7,1};
int arr4[] = {4,6};
int arr5[] = {5};
int arr6[] = {6};
int arr7[] = {7,9,3,1};
int arr8[] = {8,4,2,6};
int arr9[] = {9,1};

int *arrp[] = { arr0, arr1, arr2, arr3, arr4, arr5, arr6, arr7, arr8, arr9 };

#define ARR_SIZE(n) (sizeof(arr##n)/sizeof(arr##n[0]))

int sz[] = {
    ARR_SIZE(0),
    ARR_SIZE(1),
    ARR_SIZE(2),
    ARR_SIZE(3),
    ARR_SIZE(4),
    ARR_SIZE(5),
    ARR_SIZE(6),
    ARR_SIZE(7),
    ARR_SIZE(8),
    ARR_SIZE(9)
};



int main()
{
    int s;
    cin >> s;

    int sum = 0;
    for(int i = 1; i <= s; ++i)
        sum += arrp[i%10][(i-1) % sz[i%10]];

    cout << sum << endl;

    return 0;
}


ЗЫЖ тут сумма последних цифр выводится - в задаче нужно последнюю цифру суммы - тогда
cout << sum%10 << endl;
или на этапе подсчета
sum += arrp[i%10][(i-1) % sz[i%10]];
sum %= 10;

Это сообщение отредактировал(а) J0ker - 19.12.2008, 07:45


--------------------
user posted image
PM MAIL   Вверх
Dmi3ev
Дата 19.12.2008, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 5
Всего: 41



J0ker,
Цитата

Найдите последнюю цифру суммы   1(1) + 2(2) + 3(3) + … + m(m).

Цитата

int arr9[] = {9,1};

применительно к данной задаче
если 9^9=...9, если 9*.9=...9, короче только девять на конце...
int arr9[] = 9;
для этой задачи... для 2: 4 и 6...

Это сообщение отредактировал(а) Dmi3ev - 19.12.2008, 07:48


--------------------

PM MAIL   Вверх
J0ker
Дата 19.12.2008, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 1
Всего: 14



Dmi3ev, не, ну понятно, что x9-1 - всегда четно, а остаток четного деленного на 2 всегда 0, и 0 деленное на любое число все равно ноль
но это просто наблюдение
надо-же, что-бы было КРАСИВО  smile 


--------------------
user posted image
PM MAIL   Вверх
Dmi3ev
Дата 19.12.2008, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 5
Всего: 41



Цитата

надо-же, что-бы было КРАСИВО

)))
Ну тогда не спорю...

Добавлено через 6 минут и 21 секунду
А еще ты заметил такую закономерность:
1: 1,4,7,6,5,6,3,6,9,0

2: 1,6,3,6,5,6,7,4,9,0

3: 1,4,7,6,5,6,3,6,9,0

я про че ваще, 1, 9, 0 остаются на своих местах а остальные зеркально отражаются (ну короче ты понял)... так что таким макаром можно ваще прогу укоротить, проверяя делится ли десяток на 2, если да, то певая хня, если нет , то вторая, причем ЧТОБЫ КРАСИВО БЫЛО С ЗЕРКАЛЬНОСТЬ ЧТО-НИБУДЬ ПОДУМАТЬ  smile 
ИЛИ Я ТУПЛЮ??? КАК ДУМАЕШЬ???

Добавлено через 10 минут и 37 секунд
Цитата

я про че ваще, 1, 9, 0 остаются на своих местах

и не только они, ну ты понял, просто задолбаешь опять определениями))) и придирками)))

Добавлено через 11 минут и 1 секунду
как тогда, с точками)))


--------------------

PM MAIL   Вверх
Evghenusi
Дата 19.12.2008, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: нет
Всего: 15



огромное спасибо, не сочтите за наглость, а нельзя ли код(listing) на "С" без плюсов  smile 
PM WWW   Вверх
Dmi3ev
Дата 19.12.2008, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 5
Всего: 41



а в первом коде, чем тебе не с (сout, cin)? а во втором... тоже самое...? это наглость...)))


--------------------

PM MAIL   Вверх
Evghenusi
Дата 19.12.2008, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: нет
Всего: 15



да просто я только учу язык "Си", и мне пока не известны: cout, endl, cin
да и библиотека мне не известна #include <iostream>
PM WWW   Вверх
Dmi3ev
Дата 19.12.2008, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 5
Всего: 41



переделал свое, хоя у J0ker-а вариант более хороший, я хотел тебе написать про эту логику, но... короче вот так:
Код

//---------------------------------------------------------------------------

#include <iostream.h>

//---------------------------------------------------------------------------
int myf(int b)
{
int myfres=1;
for (int i=1; i<=b; i++)
 {
  myfres=(myfres*b)%10;
 }
return myfres;
}

int main()
{
int m;
printf("Enter m:");
scanf("%u", &m);
if (m<10 || m>=1000)
 {
  printf("m out of range!"); return 0;
 }
printf("\n");
int res=0;
for (int i=1; i<=m; i++)
{
 res+=myf(i);
}
printf("Answer: %u",res%10);
return 0;
}
//---------------------------------------------------------------------------

можно так, как-то
я тут делал, так что ...


--------------------

PM MAIL   Вверх
Evghenusi
Дата 19.12.2008, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: нет
Всего: 15



благодарю
PM WWW   Вверх
Earnest
Дата 19.12.2008, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 2
Всего: 183



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0778 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.