Mukul, in first approach instead of sending the string again and again u can use the formula
(a*b)%m = ((a%m)*(b%m))%m
this way u can do sumthin like dis

int count = 0, a = 1;
while(a != 0) {
count++;
a = ((a*10)%n + 1) %n;
}

n later output a string consisting of count one's..

Regards
VM
3rd Year, Computer Engineering,
Netaji Subhas Institute of Technology.

On , Mukul Gupta <[email protected]> wrote:
Manee, Nice Question.
I have thought of two algorithms. I wanted to know how one judges them. Both have similar time complexity but the 2nd one is slightly complex and much more logical.

1. Keeping on adding 1 as a string of 1's and apply it to this modulo function to check when it becomes 0.


long long modulo(char b[],long long a)
{long long d=0,len,i,j,k;
len=strlen(b);
for (k=0;k {d*=10;
d+=b[k]-48;
d=d%a;
}

return d;

}


2. Any number ending in 3 will have the last digit as 1 if it is multiplied by 7. Consider a case 13 ...let the required answer have 11.....111. as its representation.....13 x 7 = 91..... So subtracting the 3 digit of of 111..1111 by 91...we get 111...11020....Now we know that the ones digit of the required number is 7...

Similarly, if the last digit of a ten's digit has to be '2'...The number has to be multiplied by 4.....So we subtract 13 x 4 = 52 from.....
11111.111102 to get 11...050...So we get the ten's digit as 4....

Similarly, now for a number to end in 5...it has to be multiplied by 5....we subtract...65 from 111...105....to get 111..1040...
Hundred's digit is 5
Similarly, now for a number to end in 4...it has to be multiplied by 8 ... we subtract 104 from 111...104....to get 111...000. and thus we end the process as we have got the remainder as 0.

Thus, our required answer is 13 x 8547 = 111111

Now I want to know...that both the methods have similar complexity ie. O(k) where k is the number of 1's. However, 2nd is much more logical and complex. What does the company look for?

Suggest some better methods or make ammends.

Regards,

Mukul Gupta
3rd Year, Computer Engineering,
Netaji Subhas Institute of Technology.









On Sat, Aug 6, 2011 at 9:51 AM, sahil gujral [email protected]> wrote:

yes ur wrong..111111111 is nt divisible by 23


On Sat, Aug 6, 2011 at 9:15 AM, sumit [email protected]> wrote:


This looks quite simple.

Every number ending in 3 follows a pattern.eg-

3 - 111

13 - 111111

23 - 111111111 etc

we can find the reauired no. by :

suppose input no. is 33

In every case leave the no at 1's place(least significant) ie 3, In

33 you will be left with 3(after removal of 3 at first place).

Now ,3 *(rest of nos +1 ) is your answer (in case of 33 it is 3*(3+1)

= 12 ie 111111111111).

for 103 it is 3*(10+1) = 33 1's.



Correct if I am wrong.






On Aug 5, 4:33 pm, Manee [email protected]> wrote:

> ADOBE asks the very basic C/C++ questions

>

> one of their toughest however was :

>

> every number ending in 3 has a multiple of the form "111...111"

>

> eg 3 has 111

> 13 has 111111

> so on..

>

> find the algo for finding the number for an input number ending in 3.

>

> On Aug 5, 2:33 pm, Agyat [email protected]> wrote:

>

>

>

>

>

>

>

> > hey, guys adobe is visiting our campus. So those who know questions

> > that adobe asked in written or interview, please post here as it will

> > be of great help (as adobe has visited some colleges already).

> > Thank you in advance.



--

You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group.

To post to this group, send email to [email protected].

To unsubscribe from this group, send email to [email protected].

For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.
















--

You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group.

To post to this group, send email to [email protected].

To unsubscribe from this group, send email to [email protected].


For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.












--

You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group.

To post to this group, send email to [email protected].

To unsubscribe from this group, send email to [email protected].


For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.




--
You received this message because you are subscribed to the Google Groups "Algorithm 
Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to