I am trying to find the sum of integers ( (int)(a*i)/b ) where i is from 0 to 10^10.
The problem is a/b >=1 and can be a fraction also and a and b are constant
If it wasnt a fraction then it was really easy i*(i+1)/2 * a/b

Any ideas ?

AJ

2
Contributors
3
Replies
4
Views
8 Years
Discussion Span
Last Post by Sky Diploma

Well, Sum to n terms is

$$\frac{n*(n+1)}{2}$$

Where is the need for $$a/b$$ in your equation.

Please Be a little more elaborate so that we can understand what exactly is your aim.

Edited by Sky Diploma: n/a

see i need to find the sum of i terms such that

sum = summation ( (a*i)/b )where a,b constant and i moves from 0 - 10^10

if this was the only question then you could solve it as
(a/b)=constant
then constant*(i+1)*(i)/2

but what I have to find is (int)(ai/b)
now saw a = 3 and b =2; and i is 0 - 4
3*0/2 + 3*1/2 + 3*2/2+3*3/2+3*4/2
=
0 + (int)1.5 + (int)3 + (int)4.5 + (int)6
=
0 + 1 + 3 + 4 + 6
=
14

I hope this should be clear now

Hoping for some help

Regards

AJ

From what i have understood from your question, You want to know what would happen if $$a/b$$ is a fractional value and not an integer.

Consider the following.

[TEX]Given a=3, b=2;[/TEX]
consider a variable
[Tex]val = a/b;[/tex]
If we have $$val$$ to be a type int it would probably store 1.
This is because the integer data-type just excludes the decimal places. That way we donot need to worry that

[Tex] val * (\frac{ i *(i+1)}{2}) [/tex] when i =4 would be equal to

$$1 * ( \frac{4*5}{2})$$
Which would be equal to .
$$1 * (10)$$

which is equal to 10.

Which is a faulty answer. but if you consider val to be of type double, float.

it would be
$$1.5 * 10 = 15$$

Which would be faulty as well,

This problem i think would be best solved with the help of a for loop and iterating. Continously.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.