#include <stdio.h>
int main(void)
{
int T=0,num=0;
unsigned long long N=0,a=0,b=0;
scanf("%d",&T);
while(num<T)
{
scanf("%lld",&N);
if(N==1||N==2)
{
printf("Case %d: no solution\n",++num);
continue;
}
b=N-1;
a=2*b;
printf("Case %d: %lld %lld 1\n",++num,a,b);
}
return 0;
}
#include <stdio.h>
#include <math.h>
#include <string.h>
#define llong unsigned long long
int zhishu(llong a,int *b)
{
llong i=0,j=0,k=0;
//printf("a=%lld :",a);
for(i=2,j=0;i<a;i++)
{
if(a%i==0)
{
*(b+j)=i;
j++;
k=1;
//printf(" %lld ",i);
}
}
//printf("\n");
if(k==0)
return 0;
else
return 1;
}
int find(llong n,llong nf,int *step,int *a)
{
llong i,j,t;
int b[100];
if(n==1)
{
(*step)++;
*a=1;
if((*step)<3)
{
(*step)--;
return 0;
}
else
return 1;
}
for(i=n+1;i<=2*n-2;i++)
{
if((nf!=0)&&(nf%i!=0))
continue;
memset(b,0,100);
if(zhishu(i,b)==0)
continue;
for(j=0;b[j]!=0;j++)
{
//printf("j=%d b[j]=%d\n",j,b[j]);
t=i-b[j];//2 7 14 49
(*step)+=2;
*a=i;
*(a+1)=b[j];
if(find(n-t,b[j],step,a+2)==0)
{
(*step)-=2;
continue;//
}
else
return 1;
}
}
return 0;
}
int main(void)
{
int T=0,num=0,i=0,step=0,a[100]={0};
llong N=0;
scanf("%d",&T);
//getchar();
while(num<T)
{
scanf("%lld",&N);
step=0;
if(find(N,0,&step,a)==0)
printf("Case %d: no solution\n",++num);
else
{
printf("Case %d:",++num);
for(i=0;i<step;i++)
printf(" %d",a[i]);
printf("\n");
}
}
return 0;
}#include <stdio.h>
#include <string.h>
#define NUM 100
int main(void)
{
int T=0,nu=0;
int i,L,n,k=0,flag=1,sum=0;
char c;
int alpa[1000][26],alpb[1000][26];
int num[NUM]={};
char ch[NUM]={};
scanf("%d",&T);
c=getchar();
while(nu<T)
{
scanf("%d",&L);//L为字符串长度
c=getchar();
i=0;
flag=1;
while(flag)
{
c=getchar();
if(c==‘\n‘)
{
flag=0;
break;
}
if((c>=‘0‘)&&(c<=‘9‘))
n=c-‘0‘;
while(1)
{
c=getchar();
if((c>=‘0‘)&&(c<=‘9‘))
n=c-‘0‘+n*10;
else
break;
}
ch[i]=c;
num[i++]=n;
//printf("num[%d]=%d\t",i-1,num[i-1]);
//printf(" ch[%d]=%c\n",i-1,ch[i-1]);
}
sum=0;
for(i=0;num[i]!=0;i++)
sum=sum+num[i];
n=sum/L;
//printf("sum=%d\tn=%d\n",sum,n);
k=0;
for(i=0;num[i]!=0;i++)
{
if(i>=n*(k+1))
k++;
alpa[k][ch[i]-‘a‘]=num[i];
}
memset(num,0,NUM);
memset(ch,0,NUM);
c=getchar();
i=0;
flag=1;
while(flag)
{
c=getchar();
if(c==‘\n‘)
{
flag=0;
break;
}
if((c>=‘0‘)&&(c<=‘9‘))
n=c-‘0‘;
while(1)
{
c=getchar();
if((c>=‘0‘)&&(c<=‘9‘))
n=c-‘0‘+n*10;
else
break;
}
ch[i]=c;
num[i++]=n;
//printf("num[%d]=%d\t",i-1,num[i-1]);
//printf(" ch[%d]=%c\n",i-1,ch[i-1]);
}
sum=0;
for(i=1;num[i]!=0;i++)
sum=sum+num[i];
n=sum/L;
//printf("sum=%d\tn=%d\n",sum,n);
k=0;
for(i=0;num[i]!=0;i++)
{
if(i>=n*(k+1))
k++;
alpb[k][ch[i]-‘a‘]=num[i];
}
memset(num,0,NUM);
memset(ch,0,NUM);
n=sum/L;
while((--n)&&flag)
{
for(i=0;i<26;i++)
if(alpa[n][i]!=alpb[n][i])
{
flag=0;
break;
}
}
if(flag==0)
printf("Case %d: Yes\n",++nu);
else
printf("Case %d: No\n",++nu);
}
return 0;
}原文:http://blog.csdn.net/huaxi1902/article/details/24194551