why wrong answer?

help
c
wrong-answer

#1

Take a look at my C program…
it gives wrong ans at codechef…

http://www.codechef.com/viewsolution/1954334


#2

The problem seems to be because of the gets() getting the left
of the previous scanf statement. Similar problems was faced here http://discuss.codechef.com/questions/6509/c-gone-mad.

scanf("%d",&b); actually takes the first next in the input and leaves the
following in there only, so now the input pointer is at
. gets() function reads from input till the next newline character, therefore getting an empty string, making the program wrong, while if there was scanf("%s",a), it would neglect the first newline, read the next integer and hence program works.

Therefore, whenever you’re using a mix of scanf and gets, do a dummy gets (or a getchar) after the scanf to resolve errors like this.

Also, you are not doing m++ in the first case!


#3

http://www.codechef.com/viewsolution/1954370 here is the link to your corrected code. The reason for wrong answer is already described by @piyushkumar


#4

@ piyushkumar
@ amitupadhyay

THANKS BOTH OF U…


#5

Take a look at my C program… it gives wrong ans at codechef…
http://www.codechef.com/viewsolution/4842660


#6

The num variable in your program becomes greater than 1e9+7 in the while loop and since num is int type it gets negative after INT_MAX, 2147483647 and show wrong ans.
Take modulo of the num variable every time the loop iterates in the inner while loop @bright_future


#7

your welcome
:slight_smile: