#include<bits/stdc++.h>
using namespace std;
long long int fact(int n)
{
if(n==1)
return 1;
else if(n==0)
return 1;
else
return n*fact(n-1);
}
int main()
{
long long int n,i,j,k,l,m,test,a[25],b[25];
a[0]=1;
for(i=1;i<=20;i++)
{
a[i]=fact(i);
}
cin>>test;
for(j=1;j<=test;j++)
{
cin>>n;
cout<<"Case "<<j<<": ";
if(n==1)
cout<<"1!"<<endl;
else if(n==2)
cout<<"2!"<<endl;
else if(n==3)
cout<<"1!+2!"<<endl;
else
{
k=0;
bool flag=1;
for(i=20;i>=0;i--)
{
if(n<a[i])
{
continue;
}
if(n>=a[i])
{
n=n-a[i];
b[k++]=i;
}
if(n==0)
{
flag=1;
break;
}
if(n<0||(n!=0&&i==0))
{
flag=0;
break;
}
}
if(flag==1)
{
sort(b,b+k);
for(i=0;i<k;i++)
{
cout<<b[i]<<"!";
if(i!=k-1)
cout<<"+";
}
cout<<endl;
}
else
{
cout<<"impossible"<<endl;
}
}
}
return 0;
}
using namespace std;
long long int fact(int n)
{
if(n==1)
return 1;
else if(n==0)
return 1;
else
return n*fact(n-1);
}
int main()
{
long long int n,i,j,k,l,m,test,a[25],b[25];
a[0]=1;
for(i=1;i<=20;i++)
{
a[i]=fact(i);
}
cin>>test;
for(j=1;j<=test;j++)
{
cin>>n;
cout<<"Case "<<j<<": ";
if(n==1)
cout<<"1!"<<endl;
else if(n==2)
cout<<"2!"<<endl;
else if(n==3)
cout<<"1!+2!"<<endl;
else
{
k=0;
bool flag=1;
for(i=20;i>=0;i--)
{
if(n<a[i])
{
continue;
}
if(n>=a[i])
{
n=n-a[i];
b[k++]=i;
}
if(n==0)
{
flag=1;
break;
}
if(n<0||(n!=0&&i==0))
{
flag=0;
break;
}
}
if(flag==1)
{
sort(b,b+k);
for(i=0;i<k;i++)
{
cout<<b[i]<<"!";
if(i!=k-1)
cout<<"+";
}
cout<<endl;
}
else
{
cout<<"impossible"<<endl;
}
}
}
return 0;
}
No comments:
Post a Comment