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

Найти последнюю цифру a^b - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Представление отрицательных вещественных чисел http://www.cyberforum.ru/cpp-beginners/thread273685.html
мм.. Как представляются отрицательные вещественные числа в двоичном виде? например, -1.3 (точность 3 знака) Я правильно понимаю, что так.. Разбиваем число на части '-1', '3' Первая целая, вторая дробная
C++ Решить систему уравнений методом Крамера Ненавижу математику!!! Нужно написать программу на чистом C для решения системы уравнений методом Крамера. Помню там нужно подставлять правый столбец (числа которые после знака равно) вместо каждого, находить определители и делить их на основной определитель, но его я умею искать только для матрицы 3 х 3 (треугольником). Помогите найти готовый исходник для решения такой задачи или хотя бы для... http://www.cyberforum.ru/cpp-beginners/thread273675.html
C++ не работает rand()
#include <vector> #include <iostream> #include <numeric> #include <cstdlib> using namespace std; int main(int argc, char *argv) { int i, c ;
Написал задание с классами, по примеру, но в public выдает ошибки, незнаю как их переделать :) C++
# include "stdafx.h" # include <conio.h> #include <iostream> #include <string.h> using namespace std; class Magazine {
C++ Как в С++ создать форму http://www.cyberforum.ru/cpp-beginners/thread273665.html
Как в С++ создать форму
C++ Как "вшить" звуки в программу? Подскажите пожалуйста, как "вшить" звуки в программу? тоесть либо задать не абсолютный, а относительный адрес, либо как то вшить их в программу? void __fastcall TForm1::StartDClick(TObject *Sender) { if (k==9) DWORD result = mciSendString("play d:\\Sounds\\30-1.wav", NULL, 0, NULL); if (k==8) DWORD result = mciSendString("play d:\\Sounds\\50-1.wav", NULL, 0, NULL); if (k==7)... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
10.04.2011, 18:43     Найти последнюю цифру a^b
Вот немного улучшенный вариант функции my_pow (невооруженным глазом заметно, что на больших степенях работает быстрее). Заметь, что теперь функция принимает уже последнюю цифру от числа-основания степени, а не само основание (см. строку 21):
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
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
 
int get_unsigned(const char*, size_t*);
size_t my_pow(size_t, size_t);
 
int main(int argc, char* argv[])
{
    size_t base, exp, result;
    
    if(argc != 3)
    fprintf(stderr, "Usage: %s BASE EXP\n", *argv), exit(1);
    
    if(!get_unsigned(argv[1], &base))
    fprintf(stderr, "%s is not a legal unsigned integer\n", argv[1]), exit(1);
 
    if(!get_unsigned(argv[2], &exp))
    fprintf(stderr, "%s is not a legal unsigned integer\n", argv[2]), exit(1);
 
    result = my_pow(base % 10, exp);
    
    printf("Last digit of %u ^ %u is %u\n", base, exp, result);
    
    exit(0);
}
 
int get_unsigned(const char* buf, size_t* result)
{
    static char* endptr;
    long int temp;
 
    temp = strtol(buf, &endptr, 10);
 
    if(temp == LONG_MIN || temp == LONG_MAX || !(*buf != '\0' && *endptr == '\0') || temp < 0)
    {
    *result =0;
    return 0;
    }
 
    *result = (size_t) temp;
 
    return 1;
}
 
size_t my_pow(size_t base, size_t exp)
{
    size_t temp;
 
    if(exp == 0)
    return 1;
        
    if(exp & 1)
    return (my_pow(base, exp - 1) * base) % 10;
    
    temp = my_pow(base, exp / 2);
    return (temp * temp) % 10;
}
 
Текущее время: 13:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru