kavinderrana121 Ответов: 2

Cin vs scanf в cpp (более быстрый)


я застрял на одной проблеме SPOJ.com - проблема ололо[^]

Я беру XOR всего значения наконец все значения которые приходят два раза будут отменены а оставшееся значение будет ans

1) я использовал
cin>>temp
с
std::ios::sync_with_stdio(false);

в цикле while получаем "WA" (я использовал вышеописанную строку Использование scanf() в программах на C++ быстрее, чем использование cin? - переполнение стека[^] )
Да и времени было мало

2)используется только cin>>temp got TLE

3)используется только
scanf("%d",&temp)
принято

Что я уже пробовал:

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long int t;
    cin>>t;
    std::ios::sync_with_stdio(false);
    long long int ans=0;
    while(t--){
        long long int temp;
        cin>>temp;
        ans=ans^temp;

    }
    cout<<ans;
}

может ли кто-нибудь объяснить, почему мой ответ не был принят в первом случае, согласно сообщению, я сделал то же самое

Richard MacCutchan

Вам нужно спросить людей в SPOJ.com.

2 Ответов

Рейтинг:
4

Patrice T

Цитата:
Cin vs scanf в cpp (более быстрый)

Ответ на этот вопрос зависит от деталей имплантации компилятора сайта, которых у нас нет. Проще говоря, обычно код c++ работает медленнее, чем c.

Если вы хотите, чтобы ваш код был быстрее, вам нужно понять, как тратится время. Ваш код тратит много времени на преобразование строки входных символов в целое число. Когда вы знаете, как тратится время, следующий вопрос: "есть ли другой путь?".
Вам действительно нужно это преобразование ?
На самом деле, нет.
Подумайте, как обрабатывать входные данные, если это были имена. В C/C++ символ-это 8-битное целое число, так что
'A'^'B'^'A' разрешено и работает так же, как и с целым числом.
Я позволяю вам обрабатывать детали в качестве упражнения.


Рейтинг:
0

Manish K. Agarwal

одной из причин может быть отрицательный вход, который вызовет бесконечный цикл while.


Patrice T

Поскольку это соревнование, я думаю, что вход один и тот же в обоих случаях.