-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1.c
121 lines (114 loc) · 1.92 KB
/
1.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
Author: S.K.Manoj, IIIT-H
Time complexity: O(n)
Space Complexity: O(1)
*/
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
char *output1[10000];
void fun(int n,char *s[])
{
int len,j=0,sol;
for(j=0;j<n;j++)
output1[j]=malloc(sizeof(char)*8);
for(j=0;j<n;j++)
{
char buf[8],end[8]="0";
strcpy(buf,s[j]);
sol=atoi(buf);
if(sol<=0)
{
output1[j]="-1";
continue;
}
while(1)
{
len=strlen(buf);
if(len==1)
{
strcat(end,buf);
strcpy(buf,end);
len=strlen(buf);
}
int x=len,i;
if(len>=2)
{
while(x>=2)
{
if('1'<=buf[x-1] && buf[x-1]<='9' && '0'<=buf[x-2] && buf[x-2]<='8')
{
buf[x-1]-=1;
buf[x-2]+=1;
if(x==len)
break;
int sum=0;
for(i=len-1;i>=x-1;i--)
{
sum=sum+(buf[i]-'0');
buf[i]='0';
}
for(i=len-1;i>=x-1;i--)
{
if(sum>=9)
{
buf[i]='0'+9;
sum-=9;
}
else if(sum<9)
{
buf[i]='0'+sum;
break;
}
}
/* for(i=len-1;i>x-1;i--)
{
if(buf[x-1]=='0')
break;
int diff='9'-buf[i];
if(diff==0)
continue;
else if(buf[x-1]-diff >= '0')
{
buf[i]+=diff;
buf[x-1]-=diff;
}
else if(buf[x-1]-diff < '0')
{
buf[i]+=buf[x-1]-'0';
buf[x-1]='0';
}
}*/
break;
}
x--;
}
}
if(sol==atoi(buf))
{
// strcat(end,buf);
// strcpy(buf,end);
output1[j]="-1";
break;
// continue;
}
else
{
strcpy(output1[j],buf);
break;
}
}
//end
}
}
int main()
{
int n=3;
char *a[]={"0990","101000","50"};
fun(n,a);
int i=0;
for(i=0;i<n;i++)
printf("%s\n",output1[i]);
return 0;
}