Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
5 / 5 / 4
Регистрация: 05.06.2011
Сообщений: 40

Атоморфные числа, С++, помогите доработать код

30.09.2011, 10:09. Показов 1427. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сама задача выглядит так: среди чисел от 1 до n найти все атоморфные числа ( т.е. числа которые при возведении их в квадрат совпадают с последними цифрами квадрата( пример- 6^2=36, 5^2=25))
Подскажите, как определить коофициент с (он отвечает за степень, в которую нужно возвести 10,чтоб получить нужный нам остаток от деления)? Заранее благодарен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <math.h>
 
int main()
{ 
    int n;
    printf("Put the number (n=>1) : ");
    scanf("%f", &n);
    for (int x=1, u, c; x<n+1; x++)
    {      
    с=1
        if (x==(int)((x*x) % (int)pow(10, c))) printf("%d", u);
    }
    return(0);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.09.2011, 10:09
Ответы с готовыми решениями:

Помогите доработать код.
Задача состоит в следующем: надо создать массив и вставить вместо двух случайных элементов &quot;нули&quot;. После посчитать сумму...

Помогите доработать код! СРОЧНО!
Нужно было создать сайт, в котором должно содержаться 1. Гиперссылки 2. Таблицы 3. Списки 4. Графические объекты 5. Таблицы...

Создать программу-счётчик слов (помогите доработать код)
Эта программа видит на входе &quot;Ма-ма -мыла раму. Рама-, мыла маму. Мама была рамой. А у Саши 0 - шуры муры. А у Шуры нет&quot; а на выходе...

12
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
30.09.2011, 10:15
Цитата Сообщение от Assign_me_plz
C++
1
scanf("%f", &n);
неправильно считываешь
в scanf() спецификатор %f - для float
1
5 / 5 / 4
Регистрация: 05.06.2011
Сообщений: 40
30.09.2011, 10:39  [ТС]
Спасибо, не заметил.
Была идея насчет деления несколько раз х-а на 10 с остатком, при каждом делении увеличивая с.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
30.09.2011, 10:56
просто дели квадрат числа на десять
для однозначных:
C
1
2
    if (x == x * x % 10)
        printf("%d\n", x);
для двузначных дели на (10 * 2)
1
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.09.2011, 11:17
либо так:
C++
1
2
digit = x % 10;
if (digit * digit == x)
Так оно даже лучше. Для любых чисел неотрицательных. Не надо проверять разрядность.
Но очевидно, что для чисел с одной цифрой 0 и 1 подходит. А числа с тремя и более разрядами не подходят, поэтому можно организовать цикл до min(n, 99)
1
 Аватар для x1Mike7x
222 / 135 / 19
Регистрация: 06.11.2010
Сообщений: 234
30.09.2011, 11:39
Функция log10( (double)X ) даст результатом число, на 1 меньшое за количество десятичных разрядов в числе Х.
То есть
C
1
2
3
#include <math.h>
.............................
с = (int)log10( (double)x ) + 1;
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
01.10.2011, 05:57
Цитата Сообщение от Thinker
Так оно даже лучше.
чем ?

Цитата Сообщение от Assign_me_plz
среди чисел от 1 до n найти все атоморфные числа ( т.е. числа которые при возведении их в квадрат совпадают с последними цифрами квадрата
то есть x - это число 6, а не 36
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.10.2011, 09:34
Цитата Сообщение от accept Посмотреть сообщение
чем ?
Проверки не нужны на одно- и двухразрядность
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
02.10.2011, 08:40
Цитата Сообщение от Thinker
Проверки не нужны на одно- и двухразрядность
где оно проверяет 25 * 25 = 625 ?
0
5 / 5 / 4
Регистрация: 05.06.2011
Сообщений: 40
04.11.2011, 00:18  [ТС]
Ребят, помогите, доработал код, но теперь почему-то не выводит на экран результат роботы программы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <math.h>
#include<string.h>
int main()
{ 
 int u,n,x,c;
 printf("input the n(n=>1) ");
 
 scanf("%i", &n);
 
if (n<1) 
{
          printf ("wrong n, sorry");
          return(0);
}
for (x=1 ; x<=n ; x++ )
{
      u=x*x;
      c=(int)log10((double)x)+1;
      if (x==(int)((u%(int)pow(10,c))))     printf("%i", u) ;
}
return(0);
}
0
14 / 14 / 4
Регистрация: 17.10.2011
Сообщений: 54
04.11.2011, 03:38
Разбил на функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int stepen(int c){
    int a=1;
    for(int i=1;i<=c;i++) a*=10; 
    return a;}
int count(int i){
    int c=0;
    for(int j=i;j!=0;c++) j/=10;
    return c;}
int main(){
       setlocale(LC_ALL,"rus"); int n;
       cout<<"Введите число "; cin>>n;
        for(int i=1;i<=n;i++){
        if((i*i)%stepen(count(i))==i) cout<<i<<endl;}
        return 0;}
1
Заблокирован
04.11.2011, 12:16
compile-time алгоритм, даже вывод в некотором смысле compile-time:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//power
template <int x, int y> struct power
{
    static const int value = power<x, y-1>::value * x;
};
 
template <int x> struct power<x, 0>
{
    static const int value = 1;
};
//power end
 
 
 
 
//comparison
template <int x1, int x2> struct compare_if_x1_includes_x2
{
    static const int value = ((x1 % 10) == (x2 % 10)) * compare_if_x1_includes_x2<x1 / 10, x2 / 10>::value;
};
 
template <int x1> struct compare_if_x1_includes_x2<x1, 0>
{
    static const int value = 1;
};
 
template <int x2> struct compare_if_x1_includes_x2<0, x2>
{
    static const int value = 0;
};
 
template <> struct compare_if_x1_includes_x2<0, 0>
{
    static const int value = 1;
};
//comparison end
 
 
 
//a special case of comparison
template <int x> struct special_compare
{
    static const int value = ::compare_if_x1_includes_x2< power<x, 2>::value, x>::value;
};
//end special comparison
 
 
 
//output all tips
template <int x, bool y = (bool)special_compare<x>::value > struct OutputAll;
 
template <int x> struct OutputAll<x, true>
{
        OutputAll() 
        {
                cout << x << " is atomorphic!" << endl;
                OutputAll<x-1>();
        };
};
 
 
template <int x> struct OutputAll<x, false>
{
        OutputAll() 
        {
                OutputAll<x-1>();
        };
};
 
 
template <> struct OutputAll<1, true>
{
 
};
 
template <> struct OutputAll<1, false>
{
 
};
//end output
 
int main()
{
    OutputAll<30>();
 
    system("pause");
}
до 100 нашлось 5 6 25 и 76. Маловато что-то, кто делал run-time сходится? Ну ещё единица тоже вроде подходит под определение
1
12 / 12 / 2
Регистрация: 25.10.2011
Сообщений: 50
04.11.2011, 13:51
подключи #include <iostream.h>
C++
1
2
3
4
5
6
7
8
9
10
for (x=1 ; x<=n ; x++ )
{
      u=x*x;
      c=(int)log10((double)x)+1;
      if (x==(int)((u%(int)pow(10,c))))
       printf("%i\n", u) ;
 
}
 getchar();
 getchar();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.11.2011, 13:51
Помогаю со студенческими работами здесь

Массив. Помогите доработать код, подскажите где ошибки.
Сама задача проста: Есть массив, состоящий из натуральных чисел, поделенный на 4 части, необходимо переставить блоки ( верхний правый с...

Цифровой корень: Помогите доработать код, что нужно делать дальше.
Цифровым корнем называется число в десятичной системе счисления, полученное из цифр исходного числа путём их сложения и повторения этого...

Перевод натурального числа в систему счисления с заданным основанием (доработать код)
#include &lt;stdio.h&gt; const int NMax = 100; int main() { int p,x,sys,i = 0; unsigned char a; scanf(&quot;%d&quot;,&amp;x); ...

Доработать код: возвести числа в степень, после сравнить полученные данные и найти большее
//программа должна считывать данные с клавиатуры и возводить числа в степень, //после сравнить полученные данные и найти большее ...

Помогите добавить в данный код нахождение максимального числа в матрице
Помогите добавить в данный код нахождение максимального числа в матрице,заранее спасибо) const N = 3; M = 6; var arr:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru