📄 2097681_wa.c
字号:
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
int flag;
int output[7];
int mark[7];
long t, max;
int len;
char num[7];
long get_num()
{
int i, j;
long tmp, ans;
ans = 0;
for(i = 0; i < len; i++)
{
tmp = 0;
j = i;
while(j<len&&mark[j]==mark[i])
{
tmp*=10;
tmp += num[j]-'0';
j++;
}
i = j-1;
ans += tmp;
}
return ans;
}
void Copy()
{
int i;
for(i = 0; i < len; i++)
output[i] = mark[i];
}
void enum_ans(char al[], int n)
{
int i, l, tmp;
l = strlen(al);
if(n==1)
{
for(i = 0; i < l; i++)
mark[i+len-l] = 1;
tmp = get_num();
if(tmp>max&&tmp<=t)
{
max = tmp;
flag = 0;
Copy();
}
else
if(tmp<=t&&tmp==max)
flag++;
return ;
}
for(i = 0; i <= l-n; i++)
{
mark[i+len-l] = n;
enum_ans(&al[i+1],n-1);
}
}
long f(char str[])
{
int i;
long tm;
tm = 0;
for(i = 0; str[i]!='\0'; i++)
{
tm *= 10;
tm += str[i]-'0';
}
return tm;
}
void input()
{
int i, p, q, tmp;
while(scanf("%ld%s",&t,num)==2)
{
if(t==0&&strcmp(num,"0")==0)
break;
flag = 0;
//printf("%ld\n",f(num));
if(t>=atol(num))
{
printf("%ld %s\n",t,num);
continue;
}
len = strlen(num);
tmp = 0;
for(i = 0; i < len; i++)
tmp += num[i]-'0';
if(tmp>t)
{
printf("error\n");
continue;
}
max = tmp;
for(i = 2; i < len; i++)
enum_ans(num,i);
if(flag)
printf("rejected\n");
else
{
printf("%ld ",max);
if(max>tmp)
{
for(p = 0; p < len; p++)
{
q = p;
while(q<len&&output[q]==output[p])
{
printf("%c",num[q]);
q++;
}
if(q!=len)
printf(" ");
else
printf("\n");
p = q-1;
}
}
else
for(p = 0; p < len; p++)
{
printf("%c",num[p]);
if(p==len-1)
printf("\n");
else
printf(" ");
}
}
}
}
int main()
{
input();
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -