#include <stdio.h>
int main()
{
long long int n;
long long int k;
long long int a[1000000];
int i;
int count;
count = 0;
scanf("%lld", &n);
scanf("%lld", &k);
for(i = 0; i < n; i++) {
scanf("%lld", &a[i]);
}
for(i = 0; i < n; i++) {
if (a[i]%k == 0)
count++;
}
printf("%d\n", count);
return 0;
}
@ayush_awasthi I believe you are trying to solve Enormous Input Test problem. Now here are few things wrong with your solution.
- Problem statement clearly states that n k (n, k<=107) , no need to use long long int , int will suffice.
- You are declaring too much stack memory inside main function. Any large arrays should be declared globally, outside of any functions - putting an array of 100000 ints inside a function probably won’t work. And this problem can be solved without using array, perform division operation by K when you read an integer and increment count accordingly.
Do these changes and you will be good to go. If you still face any problems, I’m Here :).
Thanks & Regards
CrucifiX
4 Likes
You are comparing int i
with long long int n
. If the value of n is larger than range of int then condition will be true always and it will stuck in infinite loop causing Time Limit Exceeded.
I believe that is not true. First value of N will never be greater than 10^7 as per constraint and second you can compare an integer with long long int, eg. http://ideone.com/KRD56J
even then also it did not work!
@crucifix I agree that they can be compared but I said for large value of n (greater than range of int) the comparison will yield true always. Besides I didn’t read problem statement and constraints and I replied in general not specific to this problem only.