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

Олимпиадная задача - сумма чисел меньших N, которые делятся на A или на B - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Олимпиадная задача - память Ватсона http://www.cyberforum.ru/cpp-beginners/thread843479.html
Условие Память Ватсона достигла критического состояния. Это означает, что все ячейки его памяти заполнились единицами. Рыбка узнала, что если всю память Ватсона считать одним большим...
C++ переделать программу из Pascal в С++ есть программа на паскале для поиска перевода слов в файлах. нужно переделать эту программу на c++. uses crt; var ru,en: text; r: byte; procedure FindEn; var s,ss,se: string; n:... http://www.cyberforum.ru/cpp-beginners/thread843467.html
как считать весь файл ? C++
char buff; ifstream fin("/Users/Vitaly/Desktop/laba2/laba2/list.txt",ios_base::in); fin>>buff,50; cout<<buff; fin.close(); Эта программа считутет первое слово , если я...
C++ СЛАУ методом Жордана-Гаусса
Нужна программа для решения СЛАУ методом Жордана-Гаусса с выбором главного элемента.
C++ перегрузка операций http://www.cyberforum.ru/cpp-beginners/thread843444.html
Обычным методом задача решена, помогите пожалуйста сделать перегрузку операций Условие: Указанные в заданиях операции реализовать посредством перегрузки подходящих операций #include <iostream>...
C++ Вывод строки фиксированной длинны в cout (аля printf(%5.0d)! Добрый вечер! Сегодня встал перед выбором... как выводить через printf или cout. Через принтф код выдает ошибку: Необработанное исключение по адресу, ссылаясь на файл (msvcr110d.dll) ..Нарушение... подробнее

Показать сообщение отдельно
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
20.04.2013, 23:00
С учетом того, что пересечением является нок, будет как-то так
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
#include <iostream>
 
int foo(long long x, long long n, int modulo)
{
    long long first = x;            //первый член арифметической прогрессии
 
    long long last = (n / x * x);   //последний член арифметической прогресии
 
    long long count  = n / x;       //количество членов в арифметической прогрессии
 
    return ( ( ( (first % modulo + last % modulo) % modulo) * (count % modulo) ) / 2 ) % modulo;
}
 
template <class T>
T gcd(T a, T b)
{
    while (a ^= b ^= a ^= b %= a);
    return b;
}
 
template <class T>
T lcm(T a, T b)
{
    return a * b / gcd(a, b);
}
 
int main()
{
    const int modulo = 1000000007;
    
    long long n;
 
    std::cin >> n;
    
    long long a, b;
    
    std::cin >> a >> b;
 
    std::cout << (foo(a, n, modulo) - foo(lcm(a, b), n, modulo) + foo(b, n, modulo)) % modulo << std::endl; 
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru