ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1110. Степень

I get accept,but i don't why
Послано aurora 5 сен 2016 18:18
#include<iostream>
using namespace std;
int main()
{
    int N, M, Y;
    while (cin >> N >> M >> Y)
    {
        int f = 0,t=-1;
        for (int i = 0; i < M; i++)
        {
            int x = i;
            long long y = x;
            for (int j = 2; j < N + 1; j++)
            {
                y *= x;
                y %= M;
            }
            if (y== Y)
            {
                if (f > 0)
                    cout << ' ';
                cout << x ;
                f ++;
            }
        }
        if (f == 0)
            cout << t;
        cout << endl;
    }
    return 0;
}

why it can get accept,but this one get WA

#include<iostream>
using namespace std;
int main()
{
    int N, M, Y;
    while (cin >> N >> M >> Y)
    {
        int f = 0,t=-1;
        for (int i = 0; i < M; i++)
        {
            int x = i;
            long long y = x;
            for (int j = 2; j < N + 1; j++)
            {
                y *= x;
            }
            if (y%M== Y)
            {
                if (f > 0)
                    cout << ' ';
                cout << x ;
                f ++;
            }
        }
        if (f == 0)
            cout << t;
        cout << endl;
    }
    return 0;
}
Re: I get accept,but i don't why
Послано ToadMonster 6 сен 2016 13:17
Your second program assumes that all x^N are less than long long limit.
It isn't true. 10^999 requires about 999 digits. long long limit is about 19 digits.