< Back to forum

time limit exceeded....... plzz suggest a simple logic

https://www.spoj.com/problems/DIVSUM/

#include<stdio.h>
int main()
{
    long int t,s;
    scanf("%ld",&t);
    while(t)
    {
        scanf("%ld",&s);
        long int i,sum=1;
        for(i=2;i<=s/2;i++)
        {

            if(s%i==0)
                sum=sum+i;
        }
        printf("%ld\n",sum);
        t--;
            }
    return 0;
}

Asked by: Ankan_Ghosh on April 7, 2019, 6:34 p.m. Last updated on April 7, 2019, 6:34 p.m.


Enter your answer details below:


Enter your comment details below:




1 Answer(s)

avatar

you have to precompute all the answers then answer for each query and for generating all divisors you don't need to iterate up to S/2, just go up to sqrt(n) and find all factors within this interval and generate the other factors using them... for more about it read this :)

all divisors of a number

rishup132 last updated on April 7, 2019, 6:34 p.m. 0    Reply    Upvote   

Instruction to write good question
  1. 1. Write a title that summarizes the specific problem
  2. 2. Pretend you're talking to a busy colleague
  3. 3. Spelling, grammar and punctuation are important!

Bad: C# Math Confusion
Good: Why does using float instead of int give me different results when all of my inputs are integers?
Bad: [php] session doubt
Good: How can I redirect users to different pages based on session data in PHP?
Bad: android if else problems
Good: Why does str == "value" evaluate to false when str is set to "value"?

Refer to Stack Overflow guide on asking a good question.