I've got Accepted
![:)](./images/smilies/icon_smile.gif)
Moderator: Board moderators
Code: Select all
1999999999
Code: Select all
Thanks rio for your input.
My code has bug for this input.
I took input as a string.
I used long double as j to find the number like 1999999999.
sum=0;
for(i=0,j=1;str[i];i++,j=j*10)
sum=sum+str[i]*j;
Code: Select all
Deleted
Code: Select all
(code is done in C)
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std ;
int main()
{
char a[20],b[20];
long long len,i,j,n,sum,g1,g2,x,y,z;
while(scanf("%s",a)==1)
{
sum=0;
int k=0,p=0,val=10;
len=strlen(a);
sort(&a[0],&a[len]);
for(i=0,j=len-1;i<len;i++,j--)
{
if(a[i]=='0') k++;
else{
p++;sum=sum*val+a[i]-'0'; }
b[j]=a[i];
}
b[len]=NULL;
g1=atol(b);
if(k!=0)
{ z=pow(10,p-1);
x=sum/z;
y=sum%z;
g2=(pow(10,k+p-1))/x+y; }
else
g2=atol(a);
printf("%lld - %lld = %lld = 9 * %lld\n",g1,g2,g1-g2,(g1-g2)/9);
}
return 0;
}
Try this inputrehan wrote:can anyone tell me what is the problem with my code.
I have used all necessary data type,but still it is getting WA,why? why? why? why? why? why?![]()
![]()
Code: Select all
100
Code: Select all
100 - 100 = 0 = 9 * 0
Oops.. Sorry for confusing..rehan wrote:hi helloneo,
u have told me to take 100 as input
which show "100 - 100 = 0 = 9 * 0"
as output 4 my code also ,but still its getting WA!
can u solve my problem???????
Code: Select all
100
200
300
400
500
Code: Select all
100 - 100 = 0 = 9 * 0
200 - 200 = 0 = 9 * 0
300 - 300 = 0 = 9 * 0
400 - 400 = 0 = 9 * 0
500 - 500 = 0 = 9 * 0
But My question is now if the value is 100 then why the smallest value is 100?????There is a greedy approach!
The largest number can be found by sorting the input number in descending order.
The smallest one can be found by sorting in ascending order.. but there could be a case of leading 0. By swapping the smallest non zero digit with the first zero, this can be handled.
Example :
Input --> 12300
Largest number - 32100
Smallest number - 00123 --> 10023
Code: Select all
010
001