I've got Accepted
Moderator: Board moderators

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 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;
}
rehan 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?![]()
![]()
100100 - 100 = 0 = 9 * 0rehan 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???????
100
200
300
400
500100 - 100 = 0 = 9 * 0
200 - 200 = 0 = 9 * 0
300 - 300 = 0 = 9 * 0
400 - 400 = 0 = 9 * 0
500 - 500 = 0 = 9 * 0There 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
010
001
Users browsing this forum: No registered users and 0 guests