Разница во времени выполнения в C и переполнении стека

Недавно я нашел этот сайт под названием codechef, где вы можете представить решения проблем.
Я представил два ответа на вопрос, один на C, а другой на C ++. Оба кода практически одинаковы. Но когда код, который я отправил на C, был выполнен в 4.89s, код, который я представил на C ++, истек (более 8 секунд). Как это возможно? Куда уходит время?

Вопрос был:

вход

Ввод начинается с двух натуральных чисел n k (n, k<= 107). Следующие n строк ввода содержат одно положительное целое число ti, не превышающее 10 ^ 9 каждая.

Выход

Запишите одно целое число для вывода, обозначив, сколько целых чисел ti делится на k.

Example

Input:
7 3
1
51
966369
7
9
999996
11

Output:
4

Мой код на C:

 #include<stdio.h>

int main()  {

int n,k,t;
scanf("%d %d",&n,&k);
int i,num=0;
for(i=0;i<n;i++)  {
scanf("%d",&t);
if(t%k==0)  num++;
}

printf("%d",num);

return 0;
}

Мой код на C ++:

 #include<iostream>

using namespace std;

int main()  {

int n, k, t,num=0;
cin>>n>>k;
for(int i=0;i<n;i++)  {
cin>>t;
if(t%k==0)  num++;
}

cout<<num;
return 0;
}

8

Решение

Код не совсем то же самое, хотя они делают то же самое

Версия c ++ использует cin и потоки, которые по умолчанию медленнее, чем scanf и т. Д.

По умолчанию, cin / cout тратит время на синхронизацию с буферами stdio библиотеки C, так что вы можете свободно смешивать вызовы scanf / printf с операциями над cin / cout. Вы можете отключить это с std::ios_base::sync_with_stdio(false);

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

28

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]