Недавно я нашел этот сайт под названием 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
#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;
}
#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;
}
Код не совсем то же самое, хотя они делают то же самое
Версия c ++ использует cin и потоки, которые по умолчанию медленнее, чем scanf и т. Д.
По умолчанию, cin / cout тратит время на синхронизацию с буферами stdio библиотеки C, так что вы можете свободно смешивать вызовы scanf / printf с операциями над cin / cout. Вы можете отключить это с std::ios_base::sync_with_stdio(false);
При этом время будет более или менее схожим, я ожидаю
Других решений пока нет …